Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 区分大小写的查询返回字符串而不是列表_Python_Sql_Postgresql_Case Sensitive_Identifier - Fatal编程技术网

Python 区分大小写的查询返回字符串而不是列表

Python 区分大小写的查询返回字符串而不是列表,python,sql,postgresql,case-sensitive,identifier,Python,Sql,Postgresql,Case Sensitive,Identifier,我在使用python的pgdb使用多个区分大小写的列执行查询时遇到了一个问题。大多数查询的结果都返回python列表,但如果我对指定多个区分大小写的列的表发出查询,结果将是一个字符串 例如,我在PostgreSQL数据库中有一个表,其中有3个大小写敏感的boolean列,名为: (colA, colB, debug) 如果我有兴趣选择多个列,我将从查询中收到原始字符串结果: query = 'SELECT ("colA", debug) FROM my_table;" 或 查询将返回: cu

我在使用python的pgdb使用多个区分大小写的列执行查询时遇到了一个问题。大多数查询的结果都返回python列表,但如果我对指定多个区分大小写的列的表发出查询,结果将是一个
字符串

例如,我在PostgreSQL数据库中有一个表,其中有3个大小写敏感的
boolean
列,名为:

(colA, colB, debug)
如果我有兴趣选择多个列,我将从查询中收到原始
字符串
结果:

query = 'SELECT ("colA", debug) FROM my_table;"

查询将返回:

cursor.execute(query)
cursor.fetchone()
['(f,f)']
发出以下查询:

query = "SELECT * FROM my_table;"
cursor.execute(query)
cursor.fetchone()
预期python列表中的结果:

[False, False, False]
如果我在引号中指定一列,则预期结果为:

query = 'SELECT ("colA") FROM my_table;'
cursor.execute(query)
cursor.fetchone()
[False]

我希望有人能给我指出正确的方向,让我明白为什么我在选择多个区分大小写的列时会收到原始的
字符串。我可以发出多个查询来解决我的问题,或者只是
SELECT*
,但为了维护健壮的代码并防止将来对表进行更改,我更愿意指定我的列。

如果将多个列括在括号中,则形成一个特殊的行类型,从而返回一个值

SELECT ("colA", "colB") FROM my_table;
删除paren以获取单个列:

SELECT "colA", "colB" FROM my_table;
如果对双重引用有疑问,请阅读。我的长期建议是只在PostgreSQL中使用合法的小写标识符

SELECT "colA", "colB" FROM my_table;