我正在使用ibm_db_dbi连接到DB2数据库,并且需要将多个谓词传递给SQL。我有一些下面的示例代码可以运行,但是很难将多个谓词传递给SQL。目标是将查询传递给DB2,然后将数据写回Python中的列表或数据框。
这是我要传递给数据库的查询:
select someStuff
from tableA a join tableB b on a.key = b.key
where a.value = %s and a.date between %s and %s
我有一个数据框,其中包含三列(值属性,date1和date 2),每一列中都有一堆值。我的计划是使用for循环传递数据,并在数据框中有行的情况下运行查询多次,然后将每个结果附加回列表对象。
我正在尝试通过一个简单,简单的示例查询来实现我的目标。到目前为止,我已经能够运行包含单个parm的查询,但是很难将其扩展为三个。问题是我不知道如何在下面的查询对象引用中引用三个单独的“列”。感谢您的帮助
下面是到目前为止可以运行的测试查询:
blahList = [-123,123]
dataDB2 = []
for item in blahList:
aTestSQL = """
select '%s' value from sysibm.sysdummy1
"""
query = aTestSQL % (item)
curDB2 = conDB2.cursor()
curDB2.execute(query)
dataDB2.append(curDB2.fetchone())
答案 0 :(得分:0)
这是我想出的一个解决方案,也许会对下一个人有帮助:
blahlist = [(-1990963710,'ralph'), (3912019,'wreckit')]
dataDB2 = []
for idx, val in enumerate(blahlist):
number = val[0]
name = val[1]
aTestSQL = """
select %d NUMBER, '%s' NAME from sysibm.sysdummy1
"""
query = aTestSQL % (number,name)
curDB2 = conDB2.cursor()
curDB2.execute(query)
dataDB2.append(curDB2.fetchall())