Python MySQL Insert Into Table
To fill a table in MySQL, use the «INSERT INTO» statement.
Example
Insert a record in the «customers» table:
mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)
sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = («John», «Highway 21»)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, «record inserted.»)
Important!: Notice the statement: mydb.commit() . It is required to make the changes, otherwise no changes are made to the table.
Insert Multiple Rows
To insert multiple rows into a table, use the executemany() method.
The second parameter of the executemany() method is a list of tuples, containing the data you want to insert:
Example
Fill the «customers» table with data:
mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)
sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = [
(‘Peter’, ‘Lowstreet 4’),
(‘Amy’, ‘Apple st 652’),
(‘Hannah’, ‘Mountain 21’),
(‘Michael’, ‘Valley 345’),
(‘Sandy’, ‘Ocean blvd 2’),
(‘Betty’, ‘Green Grass 1’),
(‘Richard’, ‘Sky st 331’),
(‘Susan’, ‘One way 98’),
(‘Vicky’, ‘Yellow Garden 2’),
(‘Ben’, ‘Park Lane 38’),
(‘William’, ‘Central st 954’),
(‘Chuck’, ‘Main Road 989’),
(‘Viola’, ‘Sideway 1633’)
]
print(mycursor.rowcount, «was inserted.»)
Get Inserted ID
You can get the id of the row you just inserted by asking the cursor object.
Note: If you insert more than one row, the id of the last inserted row is returned.
Example
Insert one row, and return the ID:
mydb = mysql.connector.connect(
host=»localhost»,
user=»yourusername«,
password=»yourpassword«,
database=»mydatabase»
)
sql = «INSERT INTO customers (name, address) VALUES (%s, %s)»
val = («Michelle», «Blue Village»)
mycursor.execute(sql, val)
print(«1 record inserted, ID:», mycursor.lastrowid)
Вставка данных в таблицу 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.
Разбор кода
- import sqlite3 :
- На этой строке модуль sqlite3 импортируется в программу.
- С помощью классов и методов из модуля можно взаимодействовать с базой данных SQLite.
- sqlite3.connect() и connection.cursor() :
- С помощью метода sqlite3.connect() устанавливается соединение с базой данных SQLite из Python.
- Дальше используется connection.cursor() для получения объекта cursor из объекта соединения.
- После этого готовится INSERT-запрос для вставки данных в таблицу. В нем указываются названия колонок и их значения. Всего в таблице 5 колонок.
- 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 закрыто
Проверить результат можно, получив данные из таблицы.
Вставка нескольких строк с помощью 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 закрыто
Разберем последний пример:
- После подключения к базе данных подготавливается список записей для вставки в таблицу. Каждая из них — это всего лишь строка.
- Инструкция SQLite INSERT содержит запрос с параметрами, где на месте каждого значения стоит вопросительный знак.
- Дальше с помощью cursor.executemany(sqlite_insert_query, recordList) в таблицу вставляются несколько записей.
- Чтобы узнать количество вставленных строк используется метод cursor.rowcount . Наконец, нужно не забыть сохранить изменения в базе.