Опитвам се да вмъкна данни в базата данни, като използвам следния код в 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()
но тя дава грешка казвам модул не е намерен. Моля помогнете?
Отговори:
29 за отговор № 1Трябва да се ангажирате след въвеждането:
cursor.execute("Insert into links (link,id) values (?,?)",(a,b))
conn.commit()
или използвайте връзка като мениджър на контекста:
with conn:
cursor.execute("Insert into links (link,id) values (?,?)", (a, b))
или правилно задайте autocommit, като зададете isolation_level
параметър за ключова дума connect()
метод към None
:
conn = db.connect("insertlinks.db", isolation_level=None)
виждам Контролни сделки.
1 за отговор № 2
Може да е малко късно, но да зададете 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")
Надявам се, че ще ви помогне!