将查询结果分配给变量

时间:2014-12-17 18:57:25

标签: python postgresql psycopg2

我有以下查询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

获得此类事情的正确方法是什么?

3 个答案:

答案 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()来获取光标中的行。

查看available fetch methods

在你的情况下,有些东西:

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())