我对编程世界还很陌生。我正在使用Python,Pandas和SQLlite;最近我已经开始构建Postgresql数据库。我正在尝试查询一个postgres数据库,并使用结果创建一个Pandas数据框。我发现以下作品:
import pandas as pd
from sqlalchemy import create_engine # database connection
engine = create_engine('postgresql://postgres:xxxxx@localhost:xxxx/my_postgres_db')
df = pd.read_sql("SELECT * FROM my_table Where province='Saskatchewan'", engine)
工程完美,但我的问题是如何将用户输入传递给sql查询。具体来说,我想执行以下操作:
province_name = 'Saskatchewan' #user input
df = pd.read_sql("SELECT * FROM my_table Where province=province_name", engine)
但是,这将返回错误消息:ProgrammingError:(psycopg2.ProgrammingError)列“ province_selected”不存在LINE 1:SELECT * FROM my_table where Province = province_selec ...
谁能提供这件事的指导?另外,任何人都可以建议我如何处理Postgres数据库中带有'/'等字符的字段名称。我的数据库有一个称为CD / CSD的字段(列标题),当我尝试对该字段运行查询时(类似于上面的代码),我只会收到错误消息。任何帮助将不胜感激。
您应该使用DBAPI模块提供的功能,SQLAlchemy使用该功能将参数发送到查询。使用psycopg2可能看起来像这样:
province_name = 'Saskatchewan' #user input
df = pd.read_sql("SELECT * FROM my_table Where province=%s", engine, params=(province_name,))
这比使用Python的字符串格式将参数插入查询更安全。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句