Я использую 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';
По какой-то причине это работает.Я вижу - фальшивый гид, где я ожидаю.
Я в своем уме для того, что делать.