Как сформировать DataFrame на основе выгрузки данных из таблицы БД?
Нужно получить DataFrame на основе выгрузки данных из таблицы БД.
Полнота данных DataFrame, структура и названия столбцов должны соответствовать таблице в БД.
Ответы (2 шт):
Если использовать библиотеку mariadb
import pandas as pd
import mariadb
Формируем соединение и курсор:
try:
conn = mariadb.connect(
user = 'USERNAME',
password = 'PASSWORD',
host = 'HOST', # 'localhost' или 'db' и т.п. зависит от настройки БД
port = 3306)
cur = conn.cursor()
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
Добавляем запрос в курсор
cur.execute('select * from myshema.mytable')
Выбираем все данные в объект lst:
lst = cur.fetchall()
Формируем DataFrame, одновременно именуем столбцы:
df = pd.DataFrame(lst, columns=[c[0] for c in cur.description])
Закрываем соединение с БД:
conn.close()
Pandas умеет читать данные в DataFrame напрямую из таблиц БД если использовать SQL Alchemy:
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("mysql+pymsql://user:pass@some_mariadb/dbname?charset=utf8mb4")
df = pd.read_sql("select * from myshema.mytable", engine)
Можно использовать драйвер MariaDB, но в отличие от первого варианта, который будет работать и для MySQL и для MariaDB, вариант ниже будет работать только для MariaDB:
engine = create_engine("mariadb+pymsql://user:pass@some_mariadb/dbname?charset=utf8mb4")
NOTE:
The above engine, upon first connect, will raise an error if the server version detection detects that the backing database is not MariaDB.