Функция read_sql
Функция read_sql из модуля pandas выполняет SQL-запрос
к подключённой базе данных и возвращает результат в виде DataFrame.
В первом параметре передаётся строка с SQL-запросом или имя таблицы,
во втором - объект соединения с базой данных. Дополнительно можно
указать индекс, типы столбцов и другие параметры.
Синтаксис
pd.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
Пример
Давайте выполним простой запрос к базе данных SQLite и получим результат:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE test (a INTEGER, b INTEGER)')
conn.execute('INSERT INTO test VALUES (1, 10), (2, 20), (3, 30)')
conn.commit()
df = pd.read_sql('SELECT * FROM test', conn)
print(df)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 3 30
Пример
Укажем столбец для индекса с помощью параметра index_col:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE users (id INTEGER, name TEXT)')
conn.execute('INSERT INTO users VALUES (1, "alice"), (2, "bob")')
conn.commit()
df = pd.read_sql('SELECT * FROM users', conn, index_col='id')
print(df)
Результат выполнения кода:
name
id
1 alice
2 bob
Пример
Можно передать параметры в запрос, чтобы избежать SQL-инъекций:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE data (a INTEGER, b INTEGER)')
conn.execute('INSERT INTO data VALUES (1, 10), (2, 20), (3, 30)')
conn.commit()
query = 'SELECT * FROM data WHERE a > ?'
df = pd.read_sql(query, conn, params=(1,))
print(df)
Результат выполнения кода:
a b
0 2 20
1 3 30
Смотрите также
-
функция
read_sql_query,
которая выполняет SQL-запрос и возвращает DataFrame -
функция
read_sql_table,
которая читает целую таблицу из базы данных -
функция
read_csv,
которая читает данные из CSV-файла -
функция
read_json,
которая читает данные из JSON-строки или файла