python postgresql TypeError: 'NoneType' 对象不是可迭代的循环



我有一个postgresql数据库

#p1 = {613309872640, 135117629824, 880993344004, 158175822853, 1073752495240, 216760058760, 447123298313, 912909533578, 762965475336, 306930570381, 972176171275, 6619746319, 343850096144, 764400555409, 546205930000, 528687305491, 404493333779, 77590592280, 855904184346, 936056534938, 661500784670, 141923831071, 562200894625, 567019890466, 832033035811, 72309584292, 364867195430, 190122917676, 144896917811, 580869171253, 1627505081, 627702833596, 644839868222, 172977438016,1031295913668, 463277927492, 238807296070, 500185745223, 780490132936, 947594928202, 888064501323, 992713674444, 453125481684, 502841610453, 81933315933, 94767975264, 103246266465, 275027812832, 276760003301, 420374924396, 263072530544, 203425700337, 334072272115, 917262638965, 989106489206, 598614815351, 328241935477, 554909676025}

我使用此代码

connection = psycopg2.connect(user = "...",
password = "...",
host = "...",
port = "...",
database = "...")
c = connection.cursor()

.......
match_ids = set()
for chunk in p[1]:          
for id in c.execute("SELECT S.val1 FROM table1 as F JOIN table2 AS S ON F.val2_id=S.val2_id WHERE F.val3=%s and F.val4=%s", (p[0], chunk)):
match_ids.add(id[0])
print(match_ids)


我可以在 sqlite
上使用此代码,但是在使用 postgresql 时出现错误

错误:类型错误:"NoneType"对象不可迭代

runcell(0, 'C:/Users/....../test1.py')
{613309872640, 135117629824, 880993344004, 158175822853, 1073752495240, 216760058760, 447123298313, 912909533578, 762965475336, 306930570381, 972176171275, 6619746319, 343850096144, 764400555409, 546205930000, 528687305491, 404493333779, 77590592280, 855904184346, 936056534938, 661500784670, 141923831071, 562200894625, 567019890466, 832033035811, 72309584292, 364867195430, 190122917676, 144896917811, 580869171253, 1627505081, 627702833596, 644839868222, 172977438016, 1031295913668, 463277927492, 238807296070, 500185745223, 780490132936, 947594928202, 888064501323, 992713674444, 453125481684, 502841610453, 81933315933, 94767975264, 103246266465, 275027812832, 276760003301, 420374924396, 263072530544, 203425700337, 334072272115, 917262638965, 989106489206, 598614815351, 328241935477, 554909676025}
Traceback (most recent call last):
File "C:Users.....test1.py", line 208, in <module>
for id in c.execute("SELECT S.val1 FROM table1 as F JOIN table2 AS S ON F.val2_id=S.val2_id WHERE F.val3=%s and F.val4=%s", (p[0], chunk)):
TypeError: 'NoneType' object is not iterable

尝试将下面的代码段替换为您的代码段。

for chunk in p[1]:
for id in c.execute("SELECT S.val1 FROM table1 as F JOIN table2 AS S ON F.val2_id=S.val2_id WHERE F.val3=%s and F.val4=%s", (p[0], chunk)) or []:
match_ids.add(id[0])
print(match_ids)

实际问题似乎是,查询无法获取结果。

最新更新