在 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 中看不到数据库查询输出的主要内容,如果未能解决你的问题,请参考以下文章

在 Excel 中看不到 Access 查询

在 Grafana Graph 中看不到 InfluxDB 的时间和数据

为啥我的模型在关系子查询中看不到 spatie 权限特征方法?

python app engine模型查询同一组中的模型

在 Sharepoint 中找不到查询

在 ms 访问中看不到由 pyodbc 创建的表