Я работаю над созданием продукта, который сосредотачивается на ежедневном выполнении сценария Python 3.7.0 для анализа данных.Каждый день в полночь он обрабатывает огромное количество данных, а затем экспортирует результат в две таблицы MySQL.Первая будет содержать только данные, относящиеся к текущему дню, в то время как другая таблица будет содержать объединенные данные всех выполнений.
Чтобы показать, что у меня есть, см. Код ниже, предполагая, что df
будетбыть окончательным DataFrame, сгенерированным из анализа данных:
import pandas as pd
import sqlalchemy
engine = sqlalchemy.create_engine(r"mysql+pymysql://user:psswd@localhost/pathToMyDB")
df = pd.DataFrame({'Something':['a','b','c']})
df.to_sql('DReg', engine, index = True, if_exists='replace') #daily database
df.to_sql('AReg', engine, index = False, if_exists='append') #anual database
Как вы можете видеть в параметрах моей второй функции to_sql
, я не устанавливаю индекс для базы данных за год.Однако мой менеджер попросил меня сделать это, создав индекс, который будет основан на простом правиле: это будет числовой индекс с автоматическим увеличением, который будет автоматически присваивать номер каждой строке, сохраненной в базе данных, соответствующей ее положению.
Итак, в первый раз, когда я сохранил df
, база данных должна выглядеть так:
index Something
0 a
1 b
2 c
И во втором моем выполнении:
index Something
0 a
1 b
2 c
3 a
4 b
5 c
Однако,когда я установил свой индекс на True
во второй команде df.to_sql
(превратив его в df.to_sql('AReg', engine, index = True, if_exists='append')
), после двух выполнений моя база данных выглядит так:
index Something
0 a
1 b
2 c
0 a
1 b
2 c
Я провел некоторое исследование, ноНе удалось найти способ разрешить это автоматическое увеличение индекса.Я подумал о том, чтобы читать базу данных за каждый раз при выполнении, а затем адаптировать к ней индекс моего фрейма данных, но моя база данных может легко получить ДЕЙСТВИТЕЛЬНО большой объем, что сделает ее выполнение абсурдно медленным (а также запретил мне одновременно выполнять один и тот же анализ данных на двух компьютерах безскомпрометировать мой индекс).
Так что же является лучшим решением, чтобы этот индекс работал?Что мне здесь не хватает?