Добавление столбца в SQLite3, затем заполнение его - PullRequest
4 голосов
/ 23 августа 2011

Я использую SQLite 3.6 и подключаюсь к нему с помощью Python 2.7 в Fedora 14.

Я пытаюсь добавить столбец в таблицу с помощью ALTER TABLE, а затем сразу же ОБНОВИТЬ таблицу с данными длянедавно созданный столбец.Через python я не получаю ничего, кроме NULL в новом столбце базы данных.Если я запускаю запросы через sqlite3 в терминале, он работает.

Вот - sanitized - python

def upgrade(cursor)
    cursor.execute("ALTER TABLE Test ADD COLUMN 'Guid' TEXT")

    cursor.execute("SELECT DISTINCT Name FROM Test WHERE ForeignKey=-1")
    # Loop using a row factory that puts all the Names into a list called NameList

    for Name in NameList:
        Guid = uuid.uuid4()
        cursor.execute("UPDATE Test SET Guid=? WHERE Name=?", (str(Guid),Name))

Соединение SQLite3 управляется главной функцией python, исоединение фиксируется, когда скрипт python заканчивается.Питон выполняется без ошибок, и операторы отладки показывают, что все правильные строки были найдены в вызове select.Однако, когда я смотрю на базу данных с помощью Sqliteman или sqlite3, я вижу только NULL в новом столбце.

Вот мои вызовы sqlite3.

ALTER TABLE Test ADD COLUMN 'Guid' TEXT;
UPDATE Test SET GUID="foo" WHERE Name="Test3";
select Name, Guid from Test where Name='Test3';

По какой-то причине это работает.Я вижу - фальшивый гид, где я ожидаю.

Я в своем уме для того, что делать.

1 Ответ

1 голос
/ 25 августа 2011

Проблема была в основной функции, которая завершилась до того, как мог быть выполнен вызов commit () соединения из-за ошибки в основной функции.

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