我使用SQLite 3.6,并在Fedora14上使用Python2.7连接到它。在
我试图使用altertable向表中添加列,然后立即用新创建的列的数据更新表。通过python,我在数据库的新列中只得到空值。如果我在终端中通过sqlite3运行查询,它就可以工作了。在
这是经过消毒的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执行时不会出错,debug语句显示在select调用中找到了所有正确的行。但是,当我使用Sqliteman或sqlite3查看数据库时,在新列中只看到null。在
这是我的sqlite3调用。在
^{pr2}$这是有原因的。我在我期望的地方看到了——假的——guid。在
我束手无策。在
问题出在main函数中,由于main函数中的错误,main函数在进行连接的commit()调用之前退出。在
相关问题 更多 >
编程相关推荐