【发布时间】:2022-01-12 15:53:26
【问题描述】:
我正在尝试通过 Python 在列表上运行 SQL 语句。 通过传入一个列表,在这种情况下是日期。因为我想运行多个 SELECT SQL 查询并返回它们。 我通过传入整数对此进行了测试,但是当尝试传入日期时,我收到 ORA-01036 错误。非法变量名称/编号。我正在使用 Oracle 数据库。
cursor = connection.cursor()
date = ["'01-DEC-21'", "'02-DEC-21'"]
sql = "select * from table1 where datestamp = :date"
for item in date:
cursor.execute(sql,id=item)
res=cursor.fetchall()
print(res)
有什么建议可以运行吗?
【问题讨论】:
-
用IN代替=,=代表一个值,IN代表列表
-
@AhmedSunny 感谢您提供此信息。它是一个更大的表,有时使用 IN 解析比一次运行一个需要更长的时间
-
阅读 cx_Oracle 文档Binding Multiple Values to a SQL WHERE IN Clause,其中有一些通用解决方案。
标签: python sql oracle cx-oracle