我有以下查询cur.execute("SELECT COUNT(addr) FROM list_table WHERE addr = '192.168.1.1'")
来计算list_table
表上相同地址(192.168.1.1)的显示次数。 addr
属于非常类型。
当我将查询分配给变量并打印其结果时,我得到None
:
res = cur.execute("SELECT COUNT(addr) FROM list_table WHERE addr = '192.168.1.1'")
print res # None
获得此类事情的正确方法是什么?
答案 0 :(得分:6)
您可以使用以下步骤使用python检索关系数据库的数据:
#!/usr/bin/python
# import the desired package
import MySQLdb
# Open database connection
db = MySQLdb.connect(hostaddress,user,password,db_name)
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("SELECT COUNT(addr) FROM list_table WHERE addr = '192.168.1.1'")
# Fetch a single row using fetchone() method and store the result in a variable.
data = cursor.fetchone()
#OR use fetchall() method to fetch multiple rows and store the result in a list variable.
data = cursor.fetchall()
print data
# disconnect from server
db.close()
答案 1 :(得分:3)
您必须使用fetchone()
或fetchall()
来获取光标中的行。
在你的情况下,有些东西:
res = cur.execute("SELECT COUNT(addr) FROM list_table WHERE addr = '192.168.1.1'")
row = cur.fetchone()
print(row)
答案 2 :(得分:3)
再解释一下。
execute()
方法准备并执行数据库操作,并根据文档:
方法返回无。如果执行了查询,则返回值 可以使用fetch *()方法检索。
fetchone()
是最方便使用的,因为您的查询返回单个值,即count:
print(cur.fetchone())