Я работаю с MySQL, но у меня неожиданное поведение. У меня есть опыт работы с SQLite, но я думаю, что мне здесь чего-то не хватает.
Используя запрос SELECT * FROM tableName
, я ожидаю, что содержимое таблицы будет выводом. Вместо этого я получаю целое число, являющееся количеством строк в таблице. Вот фрагмент кода, который я использую.
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
Вместо этого я получаю: {{Х0}}
Если я выполняю тот же запрос от клиента SQL, я получаю ожидаемый результат. Любая умная идея? Благодарность :)
2 ответа
Вам не хватает функции FetchAll () в вашем коде. Fetch all - это не что иное, как выборка данных последнего выполненного оператора.
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)
Дело в том, что print(cursor.execute("select city from City;")
возвращает количество строк или количество строк.
Для полной записи используйте что-то вроде этого
myresult = cursor.fetchall()
for x in myresult:
print(x)
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.