Python MySQL连接器打印结果

时间:2014-09-15 02:22:02

标签: python mysql mysql-connector

我试图使用Python MySQL连接器从mysql服务器检索数据。

到目前为止,我使用我找到的示例代码以及其他资源来设置查询。问题是,我不确定如何打印所有行,而不仅仅是某一行。

我使用的代码是:

def dbConnect(tag):
    qrfid = tag
    cnx = mysql.connector.connect(user='root', password='root', host='localhost', database='test')
    cursor = cnx.cursor(buffered=True)

    query = ("SELECT * FROM `user` WHERE `rfid`= %s")


    cursor.execute(query, (qrfid,))

    if not cursor.rowcount:
        print("No results found")
    else:
        for row in cursor:
            print row[1]

    cursor.close()
    cnx.close()

我使用的测试表只有3列:id,name和rfid。

上面的代码只打印出第二列,名称,如果我放行[0],我得到id等等。

我习惯使用PHP进行查询,但我使用的RFID阅读器只支持Python,Flash和C语言。 Python是我最熟悉的语言。

谢谢!

1 个答案:

答案 0 :(得分:1)

Morning Trevor,

有点晚了,但你的问题似乎没有答案,不应该这样。

我猜你错了数据的返回方式。您假设使用row [0]访问标题的数据,使用row [1],row [2]的记录... 但实际上,“for cursor in cursor:”语句为游标对象创建一个迭代器,每个循环返回一个完整的记录。记录以元组的形式表示,由名称行引用。您可以使用“print(record)”显示while记录,或者用行[0]切出第一列,用行[1]切出第二列等。

所以,一切似乎都很好。但是,请注意查询where子句。与字符串(%s占位符)进行比较时,应始终将该字符串括在引号中。一些SQL解释器期望引用比较中的字符串文字。