Python.Добавить данные в существующую таблицу с PK и поддерживать текущие типы данных - PullRequest
0 голосов
/ 04 февраля 2019

Мне удалось успешно добавить данные в таблицу MySQL с двумя PK, однако при этом существующие типы данных меняются на те, которые выбирает pandas.

Это то, что я делаю:

1 - определение для добавления PK перед записью в БД (находится в другом посте StackOverflow)

def to_sql_k(self, frame, name, if_exists='fail', index=False,
           index_label=None, schema=None, chunksize=None, dtype=None, **kwargs):
    if dtype is not None:
        for col, my_type in dtype.items():
            if not isinstance(to_instance(my_type), TypeEngine):
                raise ValueError('The type of %s is not a SQLAlchemy '
                                 'type ' % col)

    table = pd.io.sql.SQLTable(name, self, frame=frame, index=index,
                     if_exists=if_exists, index_label=index_label,
                     schema=schema, dtype=dtype, **kwargs)
    table.create()
    table.insert(chunksize)

pandas_sql = pd.io.sql.pandasSQL_builder(engine) * Движок настроен нормально и работает для других сценариев.

2- Записать DF в БД:

to_sql_k(pandas_sql, DF, 'TableName',
        index=False, keys=('Column1', 'Column2'), if_exists='replace')

Изменения типа данных IE после выполнения этого:

varchar (100) в текст

int (1) в bigint (20)

varchar (45) to text

даже datetime to text (что странно, потому что если я делаю df.dtypes, он говорит datetime64 [ns]

Любая помощь будетвысоко ценится.

...