我使用PyODBC通过一个名为cnxn的连接连接到Oracle。
我有一个唯一标识符列表:list1=[1243234564567]
我还有一个问题:
query1 = """
select * from tablename where unique_id = ?
""'
我想做的是使用这个标识符列表来创建pandas数据帧。
作为一个测试,我做了这个:
testid = "1234" (since Oracle wants a string as that id not an integer)
然而,当我这样做时:
pd.read_sql(query1, cnxn, params = testid)
我得到"sql包含1个参数标记,但提供了4个。"
最终,我希望能够做这样的事情:
for i in list1:
newdataframe.append(pd.read_sql(query1, cnxn, params = i))
并让它吐出一个数据帧。
我已经阅读了PyODBC上的文档,看起来它指定了?作为参数。我也研究过这个问题,它是类似的,但我需要能够将结果输入到Pandas数据帧中进行进一步的操作。
我想如果我能让测试发挥作用,我就会走上正轨。
感谢
来自pandas read_sql
文档:"params
:传递给执行方法的参数列表"。
params
需要是一个列表(或元组),因此字符串被解释为4个单个字符的列表。但这很容易解决:
pd.read_sql(query1, cnxn, params=[testid])