【发布时间】:2016-05-02 15:59:53
【问题描述】:
我在尝试使用 pyodbc executemany 函数时遇到问题。 我有一个 Oracle 数据库,我想提取多天的数据。
我不能在我的请求中使用 between,因为数据库没有在日期字段上建立索引并且它永远占用。
我想整天手动询问并处理答案。
我无法线程化这部分,所以我想使用executemany 更快地获取行。
问题是当我使用executemany 时,我只得到了最后一个参数的结果。
这是我的代码:
import pyodbc
conn = pyodbc.connect('DRIVER={Oracle in instantclient_11_2};DBQ=dbname;UID=uid;PWD=pwd')
cursor = conn.cursor()
query = "SELECT date FROM table WHERE date = TO_DATE(?, 'DD/MM/YYYY')"
query_args = (
('29/04/2016',),
('28/04/2016',),
)
cursor.executemany(query, query_args)
rows = cursor.fetchall()
在行中,我只能找到带有(datetime.datetime(2016, 4, 28, 0, 0), ) 的行。
总是最后一个参数。
我在 Oracle 数据库上使用来自 WinPython 的 python 2.7.9,客户端在 11.0.2。 除了这个查询,其他所有查询都很好。
我不能使用IN () synthax 有两个原因:
我想限制数据库端的操作,并在脚本端做大部分事情(我试过但太长了)
我的请求中可能有超过 1000 个不同的日期。
(现在我正在使用 IN() OR IN() OR IN()...但是如果有人找到更好的东西那就太好了!)
我做错了吗?
感谢您的帮助。
【问题讨论】:
标签: python-2.7 oracle11g pyodbc