SqlAlchemy читает из mysql/mariadb базы данных 0000-00-00 00:00:00 и null с типом данных datetime/timestamp значения как одно и тоже

Когда я пытаюсь прочитать данные из таблицы в одной базе данных (используя Python, sqlalchemy или pandas для выполнения некоторых манипуляций с данными) и отправить эти данные в ту же таблицу в другой базе данных (с той же схемой таблицы) значения с типом datetime / timestamp в mysql, которые равны значению 0000-00-00 00:00:00, 0000-00-00 в другой таблице) или NULL (этот столбец может быть NULL,или некоторой датой(в том числе 0000-00-00 00:00:00)), в Python после считывания они имеют одно и то же значение, а именно None(если это просто sqlalchemy) или NaT (если мы прочитаем фрейм данных pandas). Как я могу сохранить целостность этих значений и отправить в другую таблицу те же данные (если мы используем значение 0000-00-00 00:00:00, то и отправляем 0000-00-00 00:00:00, если было NULL, отправляем NULL)

Схема таблицы(часть колонок), например:

create table some_table
(
    userid           int auto_increment,
    username         varchar(255)        not null,
    email            varchar(255)        not null,
    lastLogin_Date   datetime            null,
    primary key (userid)
)
    collate = utf8mb4_unicode_ci;

Данные колонки с датой:

Данные в таблице mysql

Как эти данные читаются в питоне - первая строка на фото, pandas dataframe ниже на фото.

введите сюда описание изображения

Как я делал это в python: ниже с pandas dataframe, а если использовать только sqlalchemy мы получим как выше - None (также как я знаю под капотом pandas sqlalchemy):

engine3 = create_engine(
    'mysql+mysqlconnector://' + 'root' + ':' + 'root' + 
    '@localhost:' + '3306' + '/' + 'testdb',
    echo=False)

for chunk_dataframe in pd.read_sql(
        "SELECT * FROM table_name", engine3, chunksize=10000):
    pass

После возвращения данных в mysql вместо 0000-00-00 00:00:00 будет NULL, соответственно как сохранить исходные значения?


Ответы (0 шт):