Почему полученные результаты запроса отличаются в DB browser for sqlite и питоне?

  • 27 августа 2023 г. 13:06
Ответы на вопрос 2
`DB Browser for SQLite` и Python используют разные среды выполнения для выполнения запросов к базе данных.

`DB Browser for SQLite` - это графическое приложение, которое использует свою собственную среду выполнения запросов для отправки запросов к базе данных.

Python, с другой стороны, использует свою собственную среду выполнения запросов SQLite для выполнения запросов к базе данных.

В результате, даже если запросы выглядят одинаково в `DB Browser for SQLite` и в Python, они могут давать разные результаты из-за разных сред выполнения запросов.

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

И наконец, различия в результатах могут быть связаны с ошибками в коде или в запросах, которые приводят к неправильным результатам в одной из сред выполнения запросов.

В целом, чтобы избежать различий в результатах между `DB Browser for SQLite` и Python, рекомендуется выполнять все операции с базой данных в пределах одной среды выполнения запросов и правильно синхронизировать данные, если они были изменены с помощью другой среды выполнения запросов.
контекстный менеджер дает возможность выполнить команду commit, которая сохраняет изменения, но не закрывает соединение с базой данных. Поэтому нужно самостоятельно закрыть соединение, вызвав метод close(). Ссылка на документацию: https://docs.python.org/3/library/sqlite3.html#sql... 

Например, при использовании модуля sqlite3 можно сделать следующее:

```python
import sqlite3
con = sqlite3.connect("tutorial.db")
cur = con.cursor()
cur.execute("CREATE TABLE movie(title, year, score)")
cur.execute("""
    INSERT INTO movie VALUES
        ('Monty Python and the Holy Grail', 1975, 8.2),
        ('And Now for Something Completely Different', 1971, 7.5)
""")
#con.commit()
print(cur.execute("SELECT * FROM movie").fetchall())
```

Метод insert открывает транзакцию, которую нужно подтвердить с помощью команды commit (запустите сначала код с комментарием), а затем закомментируйте строку con.commit(), чтобы записать данные в базу. Выводится та часть таблицы, которая не была подтверждена командой commit, так как объект содержит информацию о нескоммитанных изменениях.

Контекстный менеджер делает только один коммит (неявный через контекстный менеджер), а в коде есть две команды insert. Поэтому последний insert не записывается в базу данных. Кроме того, постарайтесь вставлять значения в таблицу без использования форматирования строк.

Похожие вопросы