Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在试图遍历查询返回的行时,`for..in`返回元组?_Python_Postgresql_Python 3.x - Fatal编程技术网

Python 为什么在试图遍历查询返回的行时,`for..in`返回元组?

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

我从数据库中的表中选择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.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:
make
x
不是元组吗?不,它是每行的一个元组。我想我明白你的意思了。仍然不明白。是的
fetch*()
返回一个元组,但是不应该
为y中的x:
make
x
不是元组吗?不,它是每行的元组。我想我明白你的意思了。