DataFrame.to_sql()
Метод to_sql() сохраняет содержимое DataFrame в таблицу реляционной базы данных. Требует подключения через SQLAlchemy. Удобно для долгосрочного хранения логов с устройств, IoT-телеметрии, результатов экспериментов.
Сигнатура
DataFrame.to_sql(name, con, schema=None, if_exists="fail",
index=True, index_label=None, chunksize=None,
dtype=None, method=None)
Параметры
name— имя таблицы.con—sqlalchemy.Engineилиsqlite3.Connection.if_exists—"fail","replace"или"append".index— записывать ли индекс как столбец.chunksize— размер пачки строк для пакетной вставки.dtype— словарь типов SQL для столбцов.method—None,"multi"или callable для оптимизации вставки.
Возвращаемое значение
Число записанных строк или None (зависит от версии).
Примеры
Пример 1. Запись в SQLite
import pandas as pd
import sqlite3
df = pd.DataFrame({"pin": ["A0", "A1"], "value": [512, 600]})
con = sqlite3.connect("sensors.db")
df.to_sql("readings", con, if_exists="replace", index=False)
con.close()
Пример 2. Через SQLAlchemy и PostgreSQL
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine("postgresql://user:pass@localhost/iot")
df = pd.DataFrame({"temp": [23.5, 24.0]})
df.to_sql("temperature", engine, if_exists="append", index=False)
Пример 3. Добавление новых строк
import pandas as pd
import sqlite3
new_data = pd.DataFrame({"pin": ["A2"], "value": [710]})
con = sqlite3.connect("sensors.db")
new_data.to_sql("readings", con, if_exists="append", index=False)
con.close()
Пример 4. Указание типов столбцов
import pandas as pd
import sqlite3
from sqlalchemy.types import Integer, String
df = pd.DataFrame({"pin": ["A0"], "value": [512]})
con = sqlite3.connect("sensors.db")
df.to_sql("readings_typed", con, if_exists="replace",
dtype={"pin": String(8), "value": Integer()}, index=False)
con.close()
Пример 5. Чтение обратно
import pandas as pd
import sqlite3
con = sqlite3.connect("sensors.db")
df = pd.read_sql("SELECT * FROM readings", con)
print(df)
con.close()
pin value
0 A0 512
1 A1 600
2 A2 710
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.