Cursor execute python вставка переменной

Как вставить переменную python в sql

Чтобы передать переменную в SQL запрос в Python, вы можете использовать параметризованный запрос. Вот пример:

import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase" ) mycursor = mydb.cursor() sql = "SELECT * FROM customers WHERE address = %s" adr = ("Yellow Garden 2", ) mycursor.execute(sql, adr) myresult = mycursor.fetchall() for x in myresult: print(x) 

В этом примере мы передаем переменную adr в SQL запрос. Мы используем %s в запросе как заполнитель для нашей переменной. Затем мы передаем нашу переменную в функцию execute() вместе с запросом.

Это позволяет избежать SQL инъекций и делает ваш код более безопасным.

Для более детального изучения вопроса «SQL инъекции» рекомендуем просмотреть урок Безопасность из курса Python: Веб-разработка (Flask)

Источник

Вставка данных в таблицу 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 . Наконец, нужно не забыть сохранить изменения в базе.

Источник

Читайте также:  Simple Registration Form in PHP with Validation | Tutsmake.com
Оцените статью