Sqlite3 не фиксируется, как ожидалось, при вставке

#python #sqlite

#python #sqlite

Вопрос:

Итак, как описано в названии, python не фиксируется в базе данных, даже если я попрошу его

Следующий код я использую для вставки в базу данных:

 try:
    get_db().execute("insert into Profesor(DNI, NombreApellidos, Telefono, Email, Ranking) values(?,?,?,?,?)", [dni, nombre, telefono, email, ranking])
    get_db().commit()
    get_db().close()
    return "OK"

except:
    return "Algo ha fallado insertando los datos, intentelo de nuevo"
 

get_db() — это функция, которая выполняет соединение с:

 def get_db():
    db = sqlite3.connect("database.db) 
    return db
 

К сожалению, каждый раз, когда я проверяю таблицу, она не возвращается с зафиксированным результатом, ни через мою функцию python, ни из терминала. Но если я вставляю данные выше через терминал, он работает нормально, когда я проверяю из командной строки, он показывает новые добавленные данные, и моя функция python также отображает новые добавленные данные.

Единственное решение, которое я нашел до сих пор, — это добавление isolation_level=None при подключении

Что я делаю не так до сих пор? 🙁

Комментарии:

1. get_db() возвращает новое соединение каждый раз, когда вы его вызываете, поэтому .execute() вызов не работает с тем же соединением, .commit() что и вызов. Вызовите get_db только один раз и повторно используйте это соединение для всех операций.

2. О, так глупо с моей стороны! Не думал об этом

Ответ №1:

Как справедливо указал @John Gordon, это было вызвано тем, что я открывал новое соединение каждый раз, когда вызывал get_db(). Решается с помощью предложенного им решения