我正在使用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客户端运行相同的查询,则会得到预期的输出。有什么好主意吗? 谢谢:)
答案 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)