Python 为什么在试图遍历查询返回的行时,`for..in`返回元组?
我从数据库中的表中选择1列。我想迭代每个结果。为什么我这么做的时候它是一个元组而不是一个值Python 为什么在试图遍历查询返回的行时,`for..in`返回元组?,python,postgresql,python-3.x,Python,Postgresql,Python 3.x,我从数据库中的表中选择1列。我想迭代每个结果。为什么我这么做的时候它是一个元组而不是一个值 con = psycopg2.connect(…) cur = con.cursor() stmt = "SELECT DISTINCT inventory_pkg FROM {}.{} WHERE inventory_pkg IS NOT NULL;".format(schema, tableName) cur.execute(stmt) con.commit() referenced = cur.fe
con = psycopg2.connect(…)
cur = con.cursor()
stmt = "SELECT DISTINCT inventory_pkg FROM {}.{} WHERE inventory_pkg IS NOT NULL;".format(schema, tableName)
cur.execute(stmt)
con.commit()
referenced = cur.fetchall()
for destTbl in referenced:#why is destTbl a single element tuple?
print('destTbl: '+str(referenced))
stmt = "SELECT attr_name, attr_rule FROM {}.{} WHERE ppm_table_name = {};".format(schema, tableName, destTbl)#this fails because the where clause gets messed up because ‘destTbl’ has a comma after it
cur.execute(stmt)
因为db api就是这样做的:总是为结果中的每一行返回一个元组
只要需要,就可以在任何地方引用
destTbl[0]
。因为db api就是这样做的:总是为结果中的每一行返回一个元组
只要需要,就可以在任何地方引用destTbl[0]
。因为您从数据库中获取行,并且API是一致的
如果您的查询要求*
列,或者特定数量的列大于1,那么您还需要一个元组或列表来保存每行的这些列
换句话说,仅仅因为您在这个查询中只有一列,并不意味着API会突然改变它返回的对象的类型来建模一行
只需始终将行视为序列,并使用索引或元组赋值来获取特定值。使用:
inventory_pkg = destTbl[0]
或
例如。因为您正在从数据库中获取行,并且API是一致的
如果您的查询要求*
列,或者特定数量的列大于1,那么您还需要一个元组或列表来保存每行的这些列
换句话说,仅仅因为您在这个查询中只有一列,并不意味着API会突然改变它返回的对象的类型来建模一行
只需始终将行视为序列,并使用索引或元组赋值来获取特定值。使用:
inventory_pkg = destTbl[0]
或
例如。还是不明白。是的
fetch*()
返回一个元组,但是不应该为y中的x:
makex
不是元组吗?不,它是每行的一个元组。我想我明白你的意思了。仍然不明白。是的fetch*()
返回一个元组,但是不应该为y中的x:
makex
不是元组吗?不,它是每行的元组。我想我明白你的意思了。