#python #sqlite
#python #sqlite
Вопрос:
Я использую python (моя среда РАЗРАБОТКИ pycharm) и новичок в SQLite. Я прочитал, что я должен использовать фиксацию, чтобы сохранить данные или изменения, иначе ни одно из них не будет сохранено в таблице. Я использую простой код для создания таблицы в базе данных без использования commit, определяю заголовки и закрываю файл базы данных. Затем с помощью DB_Browser я открываю файл и вижу, что он обновлен до того, что я только что сделал. Тогда мой вопрос: зачем мне нужна команда фиксации?
import sqlite3
from sqlite3 import Error
# Connecting SQLite to the Database
def create_connection(db_file):
""" create a database connection to a SQLite database """
try:
# Creates or opens a file called mydb with a SQLite3 DB
db = sqlite3.connect(db_file)
# Get a cursor object
cursor = db.cursor()
# Check if table users does not exist and create it
cursor.execute('''CREATE TABLE IF NOT EXISTS
users(id INTEGER PRIMARY KEY, name TEXT, phone TEXT, email TEXT unique, password TEXT)''')
except Error as e:
# Roll back any change if something goes wrong
db.rollback()
raise e
finally:
# Close the db connection
db.close()
fname = "mydb.db"
create_connection(fname)
Комментарии:
1. Я думаю, вы имеете в виду git? В git есть много вводных материалов, если вы ищете в Google. Я бы начал с этого, и если у вас возникнут проблемы, тогда возвращайтесь.
2. Я полагаю, что вы говорите о транзакции базы данных: несколько операторов sql, которые должны быть успешно выполнены, или затем откатить их. В этом случае вы выполняете один оператор sql вне транзакции, поэтому оператор фиксации не требуется. Транзакция SQLite
3. Ричард, я нашел в вашей ссылке «По умолчанию SQLite находится в режиме автоматической фиксации». Это отвечает на мои вопросы. Очень полезно, спасибо.
Ответ №1:
commit()
Этот метод фиксирует текущую транзакцию. Если вы не вызываете этот метод, все, что вы сделали с момента последнего вызова commit(), не будет видно из других подключений к базе данных. Если вам интересно, почему вы не видите данные, которые вы записали в базу данных, пожалуйста, проверьте, что вы не забыли вызвать этот метод
https://docs.python.org/2/library/sqlite3.html Пожалуйста, ознакомьтесь с документацией, в которой вы найдете ответ в 90% случаев.
Ответ №2:
По-видимому, по этой ссылке
По умолчанию SQLite находится в режиме автоматической фиксации.
Спасибо Ричарду за указание этой ссылки.