pyodbc returns 中的清理查询仅字段名称
Sanitized queries in pyodbc returns only the field name
当我使用 pyodbc 查询我的 SQL 服务器时,我只得到我请求的字段的名称(而不是值本身)。
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT ? FROM [Projects]', '[ProjectNo]')
for row in cursor.fetchall():
print(row)
这将打印以下内容:
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
行数等于项目中的行数table。当 cursor.execute 中的第二个参数是“[ProjectNo]”、"ProjectNo" 甚至 "blahblahblahblah" 时,我遇到了同样的问题;每行仅给出请求字段的名称。
如果我在 cursor.execute 中只使用一个参数,我就没有这个问题:
cursor.execute('SELECT [ProjectNo] FROM [Projects]')
这将 return 我所期望的。
我在这里错过了什么?
你可以这样使用,
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT {} FROM [Projects]".format('[ProjectNo]'))
for row in cursor.fetchall():
print(row)
正如 Serg 在评论中的回答:
列名不能是构造的 query/statement 中的可变参数。只有 values 可以作为参数。
当我使用 pyodbc 查询我的 SQL 服务器时,我只得到我请求的字段的名称(而不是值本身)。
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT ? FROM [Projects]', '[ProjectNo]')
for row in cursor.fetchall():
print(row)
这将打印以下内容:
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
('[ProjectNo]', )
行数等于项目中的行数table。当 cursor.execute 中的第二个参数是“[ProjectNo]”、"ProjectNo" 甚至 "blahblahblahblah" 时,我遇到了同样的问题;每行仅给出请求字段的名称。
如果我在 cursor.execute 中只使用一个参数,我就没有这个问题:
cursor.execute('SELECT [ProjectNo] FROM [Projects]')
这将 return 我所期望的。
我在这里错过了什么?
你可以这样使用,
import pyodbc
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
cursor.execute('SELECT {} FROM [Projects]".format('[ProjectNo]'))
for row in cursor.fetchall():
print(row)
正如 Serg 在评论中的回答:
列名不能是构造的 query/statement 中的可变参数。只有 values 可以作为参数。