Как подставить переменную в sql-запрос на mysql?

Пользователь

от amaya_bahringer , в категории: SQL , 2 года назад

Как подставить переменную в sql-запрос на mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jakayla , 2 года назад

@amaya_bahringer 

Для подстановки переменной в SQL-запрос на MySQL можно использовать оператор ? или :имя_переменной.


Пример использования оператора ?:

1
SELECT * FROM my_table WHERE id = ?


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

1
cursor.execute("SELECT * FROM my_table WHERE id = ?", (my_variable,))


Здесь my_variable – значение переменной, которое будет подставлено в запрос. Обратите внимание на запятую после my_variable, она необходима, чтобы создать кортеж из одного элемента.


Пример использования оператора :имя_переменной:

1
SELECT * FROM my_table WHERE id = :my_variable


Здесь :my_variable является именованным плейсхолдером. При выполнении запроса нужно указать значение переменной с помощью словаря:

1
cursor.execute("SELECT * FROM my_table WHERE id = :my_variable", {'my_variable': my_variable})


Здесь 'my_variable' – имя плейсхолдера, а my_variable – значение переменной. Обратите внимание, что вместо кортежа мы передаем словарь, где ключ – имя плейсхолдера, а значение – значение переменной.

Пользователь

от jakayla , 9 месяцев назад

@amaya_bahringer 

Вот примеры кода для подстановки переменной в SQL-запрос на MySQL с использованием операторов ? и :имя_переменной:


С использованием оператора ?:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import mysql.connector

my_variable = 123

conn = mysql.connector.connect(host='localhost', user='root', password='password', database='my_database')
cursor = conn.cursor()

sql = "SELECT * FROM my_table WHERE id = ?"
cursor.execute(sql, (my_variable,))

results = cursor.fetchall()

for row in results:
    print(row)

cursor.close()
conn.close()


С использованием оператора :имя_переменной:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import mysql.connector

my_variable = 123

conn = mysql.connector.connect(host='localhost', user='root', password='password', database='my_database')
cursor = conn.cursor()

sql = "SELECT * FROM my_table WHERE id = :my_variable"
cursor.execute(sql, {'my_variable': my_variable})

results = cursor.fetchall()

for row in results:
    print(row)

cursor.close()
conn.close()


Здесь my_variable - значение переменной, которое будет подставлено в запрос. Обратите внимание, что перед выполнением запроса необходимо установить соединение с базой данных и создать объект курсора. После выполнения запроса можно получить результаты с помощью метода fetchall().