gpt4 book ai didi

python - 如何将用户输入变量传递给 Sqalchemy 语句?

转载 作者:行者123 更新时间:2023-11-29 12:15:53 24 4
gpt4 key购买 nike

我对编程世界还很陌生。我正在使用 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”不存在第 1 行:SELECT * FROM my_table Where province =province_selec...

任何人都可以就此事提供指导吗?此外,任何人都可以建议我如何处理 postgres 数据库中包含“/”等字符的字段名称。我的数据库有一个名为 CD/CSD 的字段(列标题),当我尝试在该字段上运行查询(类似于上面的代码)时,我只收到错误消息。任何帮助将不胜感激。

最佳答案

您应该使用 SQLAlchemy 用来向查询发送参数的 DBAPI 模块提供的功能。使用可能如下所示的 psycopg2:

province_name = 'Saskatchewan' #user input
df = pd.read_sql("SELECT * FROM my_table Where province=%s", engine, params=(province_name,))

这比使用 Python 的字符串格式将参数插入查询更安全。

Passing parameters using psycopg2

pandas.read_sql documentation

关于python - 如何将用户输入变量传递给 Sqalchemy 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54810713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com