Data engineer, пишу на python, люблю sqlalchemy... · 18 сент 2022
Приветствую🖐
Вопрос интересный и крайне простой. Для чтения SQL в Pandas есть только 1 метод - read_sql.
Тут нужно немного прояснить: Pandas самостоятельно не читает таблицы, а выполняет SQL запросы с помощью указанного соединения с БД. То есть сформировать запрос необходимо самостоятельно - это важно.
Сделать при помощи Pandas так:
import pandas as pd
pd.read_sql_table(name="super_metric_table")
невозможно. Pandas может сделать только так:
query = """SELECT * FROM super_metric_table;"""
pd.read_sql(query)
Ниже рассмотрим минимально необходимое, чтобы выполнить SQL запрос при помощи Pandas:
Параметры соединения с БД (в различных вариантах могут быть: логин\пароль, порт и ip адресс, SSL сертификат или просто путь до файла с БД, если используется SQLite)
Объект соединения с базой - так называемый engine, который и выполняет непосредственно запрос
Непосредственно текст запроса. В Python - это многострочный комментарий, например, так:
query = """
SELECT *
FROM table t
WHERE t.age > 75
LIMIT 10;
"""
И метод reasd_sql как удобный интерфейс для всего выше.
Например, если локально установить PostgreSQL и запустить, то параметры соединения могут быть такими:
user = "admin"
pass = "my_super_pass_2022"
port = 5432 # стандартный порт PostgreSQL
ip = 'localhost' # тк база на вашем компьютере
db = 'my_db'
Если используется SQLite, то вашим параметром будет путь до файла, например, /home/user/data/my_db.db.
Далее из параметров нужно сформировать объект engine, для унификации лучше всегда использовать sqlalchemy. Ниже пример создания: