我一直在尝试使用python中的以下代码将数据插入数据库:
import sqlite3 as db
conn = db.connect('insertlinks.db')
cursor = conn.cursor()
db.autocommit(True)
a="asd"
b="adasd"
cursor.execute("Insert into links (link,id) values (?,?)",(a,b))
conn.close()
代码运行没有任何错误。但是没有对数据库进行更新。我尝试添加conn.commit()
,但是它提示错误,说找不到模块。请帮帮忙?
答案 0 :(得分:39)
插入后你必须提交:
cursor.execute("Insert into links (link,id) values (?,?)",(a,b))
conn.commit()
或使用connection as a context manager:
with conn:
cursor.execute("Insert into links (link,id) values (?,?)", (a, b))
或通过将isolation_level
关键字参数设置为connect()
方法None
来正确设置自动提交:
conn = db.connect('insertlinks.db', isolation_level=None)
答案 1 :(得分:1)
可能有点晚了,但设置autocommit = true
可以节省我的时间!特别是如果你有一个脚本来运行一些批量操作update/insert/delete
...
参考: https://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.isolation_level
这是我在剧本中常用的方式:
def get_connection():
conn = sqlite3.connect('../db.sqlite3', isolation_level=None)
cursor = conn.cursor()
return conn, cursor
def get_jobs():
conn, cursor = get_connection()
if conn is None:
raise DatabaseError("Could not get connection")
我希望它可以帮到你!