=====Основные запросы SQLite=====
Запросы в **SQLite** очень похожи на те, которые вы используете в других базах данных, таких как MySQL или Postgres. Мы просто используем обычный синтаксис SQL для выполнения запросов, после чего объект cursor выполняет SQL. Вот несколько примеров:
import sqlite3
conn = sqlite3.connect("mydatabase.db")
#conn.row_factory = sqlite3.Row
cursor = conn.cursor()
sql = "SELECT * FROM albums WHERE artist=?"
cursor.execute(sql, [("Red")])
print(cursor.fetchall()) # or use fetchone()
print("Here's a listing of all the records in the table:")
for row in cursor.execute("SELECT rowid, * FROM albums ORDER BY artist"):
print(row)
print("Results from a LIKE query:")
sql = "SELECT * FROM albums WHERE title LIKE 'The%'"
cursor.execute(sql)
print(cursor.fetchall())
Первый запрос, который мы выполнили, называется **%%SELECT *%%**, что означает, что мы хотим **выбрать все записи**, подходящие под переданное имя исполнителя, в нашем случае это “Red”. Далее мы выполняем SQL и используем функцию //fetchall()// для получения результатов. Вы также можете использовать функцию //fetchone()// для получения первого результата. Обратите внимание на то, что здесь есть прокомментированный раздел, связанный с таинственным **row_factory**. Если вы не прокомментируете эту строку, результат вернется, так как объекты Row, подобны словарям Python и дают вам доступ к полям строк точь в точь, как и словарь. В любом случае, вы не можете выполнить назначение пункта, используя объект Row. Второй запрос очень похож на первый, но возвращает каждую запись в базе данных и упорядочивает результаты по имени артиста в порядке возрастания. Это также показывает, как мы можем зациклить результаты выдачи. Последний запрос показывает, как команда LIKE используется при поиске частичных фраз. В нашем случае, мы искали по всей таблице заголовки, которые начинаются с артикля The. Знак процента (%) является подстановочным оператором.
====row_factory====
Вернуть результат в виде словаря
import sqlite3
def dict_factory(cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
conn = sqlite3.connect("mydatabase.db")
conn.row_factory = dict_factory
cursor = conn.cursor()
sql = "SELECT * FROM albums"
cursor.execute(sql)
res = cursor.fetchall()
print(res)
conn.close()