Проблема с питоном и sqlite - PullRequest
0 голосов
/ 31 июля 2010

Я не могу показать данные из базы данных sqlite на python.

connection = sqlite3.connect('db')
connection.cursor().execute('CREATE TABLE IF NOT EXISTS users (     \
                        id TEXT,                                    \
                        name TEXT,                                  \
                        avatar TEXT                                 \
                )')

# In cycle:
query = 'INSERT INTO users VALUES ("' + str(friend.id) + '", "' + friend.name + '", "' + friend.avatar +'" )'
print query
connection.cursor().execute(query)
connection.commit()

# After cycle
print connection.cursor().fetchall()

Пример вывода переменной запроса:

INSERT INTO users VALUES ("111", "Some Name", "http://avatar/path" )

В результате fetchall возвращает пустой кортежПочему?


UPD Забытый код:

connection.cursor().execute('SELECT * FROM users')
connection.cursor().fetchall()

→ []

Ответы [ 4 ]

3 голосов
/ 31 июля 2010

INSERT не возвращает данные. Чтобы вернуть данные, вам нужно будет выполнить инструкцию SELECT.

0 голосов
/ 05 января 2011

На самом деле, ответ на ваш первый вопрос: потому что вы используете разные курсоры.

connection.cursor() создает новый курсор в соединении, которое вы создали ранее. fetchall() дает вам результаты запроса, который вы выполняли ранее в том же курсоре. То есть что вы сделали, это:

# After cycle
cursor1 = connection.cursor()
cursor1.execute('SELECT * FROM users')
cursor2 = connection.cursor()
cursor2.execute("")
cursor2.fetchall()

То, что вы должны были сделать, это:

# After cycle
cursor = connection.cursor()
cursor.execute('SELECT * FROM users')
print cursor.fetchall()
0 голосов
/ 31 июля 2010
import sqlite3

con = sqlite3.connect("db")

con.execute("create table users(id, name, avatar)")

con.execute("insert into users(id, name, avatar) values (?, ?, ?)", (friend.id, friend.name, friend.avatar))
con.commit()

for row in con.execute("select * from users")
    print row

con.close()
0 голосов
/ 31 июля 2010

Поскольку отображаемая строка create table является синтаксически неверным Python, как и строка insert into.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...