PyODBC + Pandas + Parameterization



我使用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])

相关内容

  • 没有找到相关文章

最新更新