Запросы с параметрами в SQLite [Часть 4]
SQLite sqlite python, sqlite query, sqlite примеры, sqlite3 python, запросы sqlite python
Сейчас мы научимся работать с параметрами при создании запроса. Когда мы используем параметризованные запросы, мы используем местозаполнители вместо прямого написания значений в SQL запросе. Запросы с указанием параметров отдельно увеличивают безопасность и производительность.
Python модуль sqlite3 поддерживает два типа заполнителей: знаки вопроса и именованные заполнители.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
uId = 1
uPrice = 62300
con = lite.connect('test.db')
with con:
cur = con.cursor()
cur.execute("UPDATE Cars SET Price=? WHERE Id=?", (uPrice, uId))
con.commit()
print "Number of rows updated: %d" % cur.rowcount
Мы обновляем цену одной машины. В этом примере кода, мы используем заполнители типа «знак вопроса».
cur.execute("UPDATE Cars SET Price=? WHERE Id=?", (uPrice, uId))
Знаки вопроса ? являются заполнителями для значений. Значения добавляются на его место.
print "Number of rows updated: %d" % cur.rowcount
Свойство rowcount возвращает количество обновленных строк. В нашем случае, одна строка была обновлена.
Такой подход программирования и создания запрос к базе данных увеличивает безопасность приложения. webmartsoft.ru/web-razrabotka.html - профессиональная веб разработка выполняет качественные и безопасные проекты которые позволяют своим клиентам не бояться за сохранность данных своего сайта.
$ ./prepared.py
Number of rows updated: 1
Id Name Price
---------- ---------- ----------
1 Audi 62300
Была обновлена цена машины.
Второй пример использует запрос с параметрами с именованными заполнителями.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
uId = 4
con = lite.connect('test.db')
with con:
cur = con.cursor()
cur.execute("SELECT Name, Price FROM Cars WHERE Id=:Id",
{"Id": uId})
con.commit()
row = cur.fetchone()
print row[0], row[1]
Мы выбираем название и цену машины, используя именованные заполнители.
cur.execute("SELECT Name, Price FROM Cars WHERE Id=:Id",
{"Id": uId})
Именованные заполнители начинаются с символа двоеточия.