我有一张桌子,技能,尽管我试图向其中添加行,但它现在还是空的。我在CGI脚本中有以下Python代码:
open('/tmp/skills', 'a').write('Reached 1!\n')
if get_cgi('nous2dianoia'):
open('/tmp/skills', 'a').write('Reached 2!\n')
#if (get_cgi('previous') and get_cgi('name') and get_cgi('previous') !=
#get_cgi('name')):
#cursor.execute('DELETE FROM skills WHERE name = ?;',
#(get_cgi('previous'),))
cursor.execute('''INSERT INTO skills (name, nous2dianoia,
hereandnow2escapist, nf2nt, social2individual, ithou2iit,
slow2quick) VALUES (?, ?, ?, ?, ?, ?, ?);''',
(get_cgi('name'), get_cgi('nous2dianoia'),
get_cgi('hereandnow2escapist'), get_cgi('nf2nt'),
get_cgi('social2individual'), get_cgi('ithou2iit'),
get_cgi('slow2quick'),))
open('/tmp/skills', 'a').write('Reached 3!\n')
当我加载页面时,/ tmp / skills有一个新附加的内容:
Reached 1!
Reached 2!
Reached 3!
但是,该表保持为空。(脚本的其余部分在运行时不会崩溃,并且显示了如果在未传递任何CGI变量的情况下调用该脚本,将会显示的内容。)
我还没有开始交易;SQL操作不是特别高级或复杂。
关于如何使它运行而没有报告的错误但在数据库中有空技能表的任何见解?
谢谢,
您的插入语句不会自动提交。从以下文档sqlite3.Connection
:
commit()
此方法提交当前事务。如果不调用此方法,则从其他数据库连接中看不到自从上次调用commit()以来所做的任何操作。如果您想知道为什么看不到已写入数据库的数据,请检查您是否没有忘记调用此方法。
要自动提交,请将连接用作上下文管理器:
# connection.commit() is called automatically upon exit of context manager
# unless an exception is encountered, then connection.rollback() is called.
with connection:
connection.execute(insert_statment)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句