python – 在SQLite3中添加列,然后填充它
发布时间:2020-12-20 13:24:35 所属栏目:Python 来源:网络整理
导读:我正在使用SQLite 3.6,并在Fedora 14上使用 Python 2.7连接到它. 我正在尝试使用ALTER TABLE向表中添加一个列,然后立即使用新创建的列的数据更新表.通过python,我在数据库的新列中只得到NULL.如果我通过终端中的sqlite3运行查询,它可以工作. 这是 – sanitiz
我正在使用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'; 这有一定原因.我看到 – 假 – 指导我期待的地方. 我知道该怎么办. 解决方法
问题出在main函数中,该函数在由于main函数中的错误而进行连接的commit()调用之前退出.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |