加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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()调用之前退出.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读