gpt4 book ai didi

python - 在 SQLite3 中添加列,然后填充它

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:40 24 4
gpt4 key购买 nike

我正在使用 SQLite 3.6,并在 Fedora 14 上使用 Python 2.7 连接到它。

我正在尝试使用 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的main函数管理,当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';

这出于某种原因有效。我在预期的位置看到了 --fake--guid。

我不知道该怎么办。

最佳答案

问题出在主函数中,由于主函数中的错误,该函数在调用连接的 commit() 之前退出。

关于python - 在 SQLite3 中添加列,然后填充它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com