Функция read_sql_query
Функция read_sql_query выполняет переданный SQL-запрос
к подключению к базе данных и возвращает результат в виде
DataFrame. Первым параметром передаётся строка
с SQL-запросом, вторым - объект подключения к базе данных.
Функция также поддерживает параметры для указания индекса,
типов данных и других настроек.
Синтаксис
pd.read_sql_query(sql, con[, index_col, params, ...])
Пример
Давайте выполним простой запрос к SQLite базе данных:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE users (id INT, name TEXT)')
conn.execute('INSERT INTO users VALUES (1, "John")')
conn.execute('INSERT INTO users VALUES (2, "Jane")')
df = pd.read_sql_query('SELECT * FROM users', conn)
print(df)
Результат выполнения кода:
id name
0 1 John
1 2 Jane
Пример
Укажем колонку для индекса с помощью параметра index_col:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE products (id INT, name TEXT)')
conn.execute('INSERT INTO products VALUES (1, "apple")')
conn.execute('INSERT INTO products VALUES (2, "banana")')
df = pd.read_sql_query(
'SELECT * FROM products',
conn,
index_col='id'
)
print(df)
Результат выполнения кода:
name
id
1 apple
2 banana
Пример
Используем параметр params для безопасной подстановки значений:
import pandas as pd
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE users (id INT, age INT)')
conn.execute('INSERT INTO users VALUES (1, 25)')
conn.execute('INSERT INTO users VALUES (2, 30)')
conn.execute('INSERT INTO users VALUES (3, 35)')
df = pd.read_sql_query(
'SELECT * FROM users WHERE age > ?',
conn,
params=(25,)
)
print(df)
Результат выполнения кода:
id age
0 2 30
1 3 35
Смотрите также
-
функция
read_sql,
которая объединяет read_sql_query и read_sql_table -
функция
read_sql_table,
которая читает целую таблицу из базы данных -
функция
read_csv,
которая читает данные из CSV-файла -
функция
read_json,
которая читает данные из JSON-формата