在 python 中看不到数据库查询输出
Posted
技术标签:
【中文标题】在 python 中看不到数据库查询输出【英文标题】:Can not see the DB query output in python 【发布时间】:2011-02-15 13:50:19 【问题描述】:我正在从 python 执行一个简单的 mssql 查询。 我可以在探查器中看到查询到达数据库。 查询有 1 行答案。 我在 Python shell 中看不到输出
我运行下面的代码
import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
for row in cur:
print "ID=%d, Name=%s" % (row['id'], row['name'])
请指教 谢谢, 阿萨夫
【问题讨论】:
【参考方案1】:您可以在执行后调用fetchone() 或 fetchall() 从该查询中获取数据。
import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')
print cur.fetchall()
【讨论】:
【参考方案2】:import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
users = cur.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe').fetchall()
conn.close()
for row in users:
print "ID=%d, Name=%s" % (row['id'], row['name'])
尝试将结果分配给某物,而不是使用光标。
cur.execute()
是一个函数,因此虽然它确实返回了一个值(如您所见),但您并没有将其分配给任何东西,因此当您执行 for
循环时,没有什么可以循环的.
如果你不想存储结果,你可以这样做(相当混乱的)版本:
import pymssql
conn = pymssql.connect(host='SQL01', user='user', password='password', database='mydatabase', as_dict=True)
cur = conn.cursor()
sql = 'SELECT * FROM persons WHERE salesrep=%s'
for row in cur.execute(sql, 'John Doe').fetchall():
print "ID=%d, Name=%s" % (row['id'], row['name'])
conn.close()
这个对cur.execute()
的结果执行for
循环,但我真的不建议这样做
(小附录:我忘记了 fetchall 的,我已经习惯把它放在一个函数中了。抱歉)
【讨论】:
以上是关于在 python 中看不到数据库查询输出的主要内容,如果未能解决你的问题,请参考以下文章
在 Grafana Graph 中看不到 InfluxDB 的时间和数据