4
我使用SQLite 3.6,並在Fedora 14在sqlite3的添加列,然後填充它
我試圖將列添加到使用ALTER TABLE表使用Python 2.7連接到它,然後隨即使用新創建列的數據更新表。通過python,我在數據庫的新列中除NULL之外什麼都沒有。如果我通過終端中的sqlite3運行查詢,它就可以工作。
這裏是 - 消毒 - 蟒蛇
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腳本結束時,連接將提交。 python執行時沒有錯誤,調試語句顯示在select調用中找到了所有正確的行。但是,當我使用Sqliteman或sqlite3查看數據庫時,我在新列中僅看到空值。
這是我的sqlite3調用。
ALTER TABLE Test ADD COLUMN 'Guid' TEXT;
UPDATE Test SET GUID="foo" WHERE Name="Test3";
select Name, Guid from Test where Name='Test3';
這是出於某種原因。我看到了我所期望的 - 僞指導。
我在我的智慧結尾做什麼。
看起來像是python更新查詢有問題。我試過圍繞?在引號中,這是因爲SQLite查找文字而失敗的。將名稱改爲「'」+名稱+「'」也無法更新任何行。 –
你在那個光標上調用了提交(而不僅僅是關閉)? –
發現此問題。在主函數中,對update的調用實際上是過早地退出,而不是由於其他地方的錯誤而調用commit。 –