MySQL(python 3.6)-SELECT * FROM table-返回行数而不是表

时间:2019-05-29 12:05:36

标签: python mysql

我正在使用MySQL,但是我有一些意外的行为。 我过去有使用SQLite的经验,但是我想我在这里缺少一些东西。

使用查询SELECT * FROM tableName,我希望表的内容是输出。 相反,我得到一个int,即表中的行数。 这是我正在使用的代码。

import MySQLdb

conn=MySQLdb.connect(host="xxx",user="xxx",passwd="xxx")
cursor = conn.cursor()
cursor.execute("create database if not exists Test;")
cursor.execute("use Test;")
cursor.execute("create table if not exists City (id int not null primary key auto_increment, city varchar(50), unique(city));")
cursor.execute("insert into City (city) values ('Firenze');")
cursor.execute("insert into City (city) values ('Roma');")
conn.commit()
print(cursor.execute("select city from City;"))

我希望得到:

Firenze
Roma

相反,我得到: 2

如果我从SQL客户端运行相同的查询,则会得到预期的输出。有什么好主意吗? 谢谢:)

2 个答案:

答案 0 :(得分:0)

您在代码中缺少FetchAll()函数。 提取所有内容只不过是提取最后执行的语句的数据。

import MySQLdb
conn=MySQLdb.connect(host="xxx",user="xxx",passwd="xxx")
cursor = conn.cursor()
cursor.execute("create database if not exists Test;")
cursor.execute("use Test;")
cursor.execute("create table if not exists City (id int not null primary key 
auto_increment, city varchar(50), unique(city));")
cursor.execute("insert into City (city) values ('Firenze');")
cursor.execute("insert into City (city) values ('Roma');")
conn.commit()
print(cursor.execute("select city from City;"))
myresult = mycursor.fetchall()
for x in myresult:
print(x)

答案 1 :(得分:0)

事情是print(cursor.execute("select city from City;")返回行数或行数。

对于完整的记录,请使用类似的

myresult = cursor.fetchall()
for x in myresult:
    print(x)