Python sqlite3 добавление данных

Как добавлять и читать данные в SQLite с помощью Python

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

Подключить приложение Python к базе данных SQLite

Для соединения с базой данных SQLite используйте функцию connect().

import sqlite3 connection = sqlite3.connect('shows.db') 

Если файл shows.db отсутствует, он будет создан и подключен. Если он есть, то он будет подключен.

Чтобы создать таблицу в базе данных, нам нужно использовать объект курсора. Чтобы создать объект курсора, используйте метод connection.cursor() .

Теперь создайте таблицу базы данных с несколькими столбцами.

cursor.execute('''CREATE TABLE IF NOT EXISTS Shows (Title TEXT, Director TEXT, Year INT)''') 

В этом коде мы написали команду, которая создаст таблицу с ее именами столбцов и типами данных.

Вставить данные в базу данных SQLite с помощью Python

Чтобы добавить данные в SQLite с помощью Python, мы используем запрос INSERT INTO TABLE . Мы выполним запрос INSERT с помощью курсора.

cursor.execute("INSERT INTO Shows VALUES ('Stranger Things', 'Shawn Levy', 2016)") 

В этом коде мы написали запрос, и соответствующие значения столбцов — Stranger Things, Shawn Levy, 2016.

Читайте также:  Таблицы

Чтение данных в базе данных SQLite с помощью Python.

Чтобы проверить, правильно ли вставлены данные в базу данных SQLite с помощью Python, используйте запрос SELECT и распечатайте строку с помощью метода cursor.fetchone() .

cursor.execute("SELECT * FROM Shows") print(cursor.fetchone()) 

Последним шагом будет фиксация этих изменений для сохранения в базе данных и закрытие соединения.

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

import sqlite3 connection = sqlite3.connect('shows.db') cursor = connection.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS Shows (Title TEXT, Director TEXT, Year INT)''') cursor.execute( "INSERT INTO Shows VALUES ('Stranger Things', 'Shawn Levy', 2016)") cursor.execute("SELECT * FROM Shows") print(cursor.fetchone()) connection.commit() connection.close() 

Запустите указанный выше файл в терминале.

 python3 app.py ('Stranger Things', 'Shawn Levy', 2016) 

Вы можете видеть, что мы возвращаем нашу строку, что означает, что данные успешно сохранены в базе данных SQLite.

Вставить несколько данных в базу данных с помощью Python

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

moreShows = [('Money Heist', 'Alex Rodrigo', 2017), ('Dark', 'Baran bo Odar', 2017), ('1992 Scam', 'Hansal Mehta', 2020)] 

Здесь мы создали кортеж Python, содержащий каждую строку в таблице Shows .

Чтобы добавить несколько данных в базу данных SQLite с помощью Python, используйте метод cursor.executemany() .

cursor.executemany("INSERT INTO Shows VALUES (?, ?, ?)", moreShows) 

Здесь он будет брать все кортежи один за другим и вставлять их в базу данных с соответствующими полями.

Теперь давайте извлечем все данные из базы данных.

Чтобы получить все записи из базы данных SQLite, используйте метод cursor.fetchall() .

Наш полный код, который добавляет несколько записей и показывает все записи пользователю:

import sqlite3 connection = sqlite3.connect('shows.db') cursor = connection.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS Shows (Title TEXT, Director TEXT, Year INT)''') moreShows = [('Money Heist', 'Alex Rodrigo', 2017), ('Dark', 'Baran bo Odar', 2017), ('1992 Scam', 'Hansal Mehta', 2020)] cursor.executemany("INSERT INTO Shows VALUES (?, ?, ?)", moreShows) records = cursor.execute("SELECT * FROM Shows") print(cursor.fetchall()) connection.commit() connection.close()

Запустите файл и посмотрите результат.

python3 app.py [('Stranger Things', 'Shawn Levy', 2016), ('Money Heist', 'Alex Rodrigo', 2017), ('Dark', 'Baran bo Odar', 2017), ('1992 Scam', 'Hansal Mehta', 2020)] 

Здесь вы можете видеть, что мы уже добавили строку Stranger Things в первом примере, сохраненную в базе данных. Вот почему он появляется во всех записях.

Это все для добавления и чтения данных в SQLite с использованием Python.

Источник

Вставка данных в таблицу SQLite

В этом материале рассматривается, как выполнять операцию Insert в SQLite из Python для добавления новых строк в таблицу:

  • Добавление одной или нескольких строк в таблицу SQLite.
  • Добавление целых чисел, строк, чисел с плавающей точкой, с двойной точностью, а также значений datetime в таблицу SQLite.
  • Использование запросов с параметрами для добавления переменных Python в качестве динамических данных в таблицу.

Перед выполнением следующих программ нужно убедиться, что вам известны название таблицы, а также информация о ее колонках. В этом примере будет использоваться таблица sqlitedb_developers .

Пример вставки строки в таблицу SQLite

Сейчас таблица sqlitedb_developers пустая, и ее нужно заполнить. Для этого необходимо выполнить следующие шаги:

  • Установить SQLite-соединение из Python.
  • Создать объект Cursor с помощью объекта соединения.
  • Создать INSERT-запрос. Для этого нужно знать таблицу и подробности о колонках.
  • Выполнить запрос с помощью cursor.execute() .
  • После успешного завершения нужно не забыть выполнить коммит изменений в базу данных.
  • Также важно не забыть перехватить исключения SQLite.
  • Наконец, следует проверить результат, вернув данные из таблицы.
 
import sqlite3

try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sqlite_insert_query = """INSERT INTO sqlitedb_developers
(id, name, email, joining_date, salary)
VALUES
(1, 'Oleg', 'oleg04@gmail.com', '2020-11-29', 8100);"""
count = cursor.execute(sqlite_insert_query)
sqlite_connection.commit()
print("Запись успешно вставлена ​​в таблицу sqlitedb_developers ", cursor.rowcount)
cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")
Подключен к SQLite Запись успешно вставлена ​​в таблицу sqlitedb_developers 1 Соединение с SQLite закрыто

Теперь можно проверить результат, посмотрев таблицу через программу DB Browser.

Пример вставки строки в таблицу SQLite

Разбор кода

  1. import sqlite3 :
    • На этой строке модуль sqlite3 импортируется в программу.
    • С помощью классов и методов из модуля можно взаимодействовать с базой данных SQLite.
  2. sqlite3.connect() и connection.cursor() :
    • С помощью метода sqlite3.connect() устанавливается соединение с базой данных SQLite из Python.
    • Дальше используется connection.cursor() для получения объекта cursor из объекта соединения.
  3. После этого готовится INSERT-запрос для вставки данных в таблицу. В нем указываются названия колонок и их значения. Всего в таблице 5 колонок.
  4. cursor.execute() :
    • С помощью метода execute() объекта сursor выполняется запрос INSERT.
    • Чтобы сохранить изменения в базе, нужно использовать connection.commit() .
    • А с помощью cursor.rowcount можно узнать количество отредактированных строк.

И в блоке finally после завершения операции закрываются объекты cursor и соединение.

Использование переменных в запросе INSERT

Иногда в колонку таблицы нужно вставить значение переменной Python. Этой переменной может быть что угодно: целое число, строка, число с плавающей точкой, datetime . Например, при регистрации пользователь вводит свои данные. Их и можно взять вставить в таблицу SQLite.

Для этого есть запрос с параметрами. Он позволяет использовать переменные Python на месте заполнителей (?) в запросе. Пример:

 
import sqlite3

def insert_varible_into_table(dev_id, name, email, join_date, salary):
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sqlite_insert_with_param = """INSERT INTO sqlitedb_developers
(id, name, email, joining_date, salary)
VALUES (?, ?, ?, ?, ?);"""

data_tuple = (dev_id, name, email, join_date, salary)
cursor.execute(sqlite_insert_with_param, data_tuple)
sqlite_connection.commit()
print("Переменные Python успешно вставлены в таблицу sqlitedb_developers")

cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")

insert_varible_into_table(2, 'Viktoria', 's_dom34@gmail.com', '2020-11-19', 6000)
insert_varible_into_table(3, 'Valentin', 'exp3@gmail.com', '2020-11-23', 6500)

Вывод: таблица sqlitedb_developers после вставки переменной Python в качестве значения колонки.

Подключен к SQLite Переменные Python успешно вставлены в таблицу sqlitedb_developers Соединение с SQLite закрыто Подключен к SQLite Переменные Python успешно вставлены в таблицу sqlitedb_developers Соединение с SQLite закрыто

Проверить результат можно, получив данные из таблицы.

Использование переменных в запросе INSERT

Вставка нескольких строк с помощью executemany()

В предыдущем примере для вставки одной записи в таблицу использовался метод execute() объекта cursor , но иногда требуется вставить несколько строчек.

Например, при чтении файла, например, CSV, может потребоваться добавить все записи из него в таблицу SQLite. Вместе выполнения запроса INSERT для каждой записи, можно выполнить все операции в один запрос. Добавить несколько записей в таблицу SQLite можно с помощью метода executemany() объекта cursor .

Этот метод принимает два аргумента: запрос SQL и список записей.

 
import sqlite3

def insert_multiple_records(records):
try:
sqlite_connection = sqlite3.connect('sqlite_python.db')
cursor = sqlite_connection.cursor()
print("Подключен к SQLite")

sqlite_insert_query = """INSERT INTO sqlitedb_developers
(id, name, email, joining_date, salary)
VALUES (?, ?, ?, ?, ?);"""

cursor.executemany(sqlite_insert_query, records)
sqlite_connection.commit()
print("Записи успешно вставлены в таблицу sqlitedb_developers", cursor.rowcount)
sqlite_connection.commit()
cursor.close()

except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if sqlite_connection:
sqlite_connection.close()
print("Соединение с SQLite закрыто")

records_to_insert = [(4, 'Jaroslav', 'idebylos@gmail.com', '2020-11-14', 8500),
(5, 'Timofei', 'ullegyddomm@gmail.com', '2020-11-15',6600),
(6, 'Nikita', 'aqillysso@gmail.com', '2020-11-27', 7400)]

insert_multiple_records(records_to_insert)

Снова проверка с помощью получения данных из таблицы.

Подключен к SQLite Записи успешно вставлены в таблицу sqlitedb_developers 3 Соединение с SQLite закрыто

Вставка нескольких строк с помощью executemany()

Разберем последний пример:

  • После подключения к базе данных подготавливается список записей для вставки в таблицу. Каждая из них — это всего лишь строка.
  • Инструкция SQLite INSERT содержит запрос с параметрами, где на месте каждого значения стоит вопросительный знак.
  • Дальше с помощью cursor.executemany(sqlite_insert_query, recordList) в таблицу вставляются несколько записей.
  • Чтобы узнать количество вставленных строк используется метод cursor.rowcount . Наконец, нужно не забыть сохранить изменения в базе.

Источник

Оцените статью