Есть ли способ автоматически загружать типы данных столбцов в SQLite с помощью SQLAlchemy? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть большой CSV-файл с почти 100 столбцами с различными типами данных, которые я хотел бы загрузить в базу данных sqlite с помощью sqlalchemy.Это будет происходить постоянно, и я буду периодически загружать новые данные в виде новой таблицы в базу данных.Кажется, это должно быть тривиально, но я не могу заставить что-либо работать.

Все решения, которые я рассмотрел до сих пор, явно определяли столбцы при создании таблиц.

Вотминимальный пример (с гораздо меньшим количеством столбцов) того, что у меня есть на данный момент.

from sqlalchemy import *
import pandas as pd

values_list = []
url = r"https://raw.githubusercontent.com/amanthedorkknight/fifa18-all-player-statistics/master/2019/data.csv"
df = pd.read_csv(url,sep=",")   
df = df.to_dict()
metadata = MetaData()
engine = create_engine("sqlite:///" + r"C:\Users\...\example.db")
connection = engine.connect()
# I would like define just the primary key column and the others be automatically loaded...
t1 = Table('t1', metadata, Column('ID',Integer,primary_key=True))
metadata.create_all(engine)
stmt = insert(t1).values()
values_list.append(df)
results = connection.execute(stmt, values_list)
values_list = []
connection.close()

1 Ответ

1 голос
/ 23 мая 2019

Спасибо за предложения. После некоторого времени поиска приличное решение использует пакет sqlathanor. Существует функция с именем generate-model-from-csv, которая позволяет читать в формате csv (также доступен для словаря, json и т. Д.) И напрямую создавать модель sqlalchemy. Он неидеален при распознавании типов данных, но, безусловно, сэкономит вам время, если у вас много столбцов.

https://sqlathanor.readthedocs.io/en/latest/api.html#generate-model-from-csv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...