Преобразование Pandas Timestamp в string

Есть код парсера:

import io
from zipfile import ZipFile
import pandas as pd
def read_zip(zip_fn, extract_fn=None):
    zf = ZipFile(zip_fn)
    if extract_fn:
        return zf.read(extract_fn)
    else:
        return {name:zf.read(name) for name in zf.namelist()}
df = pd.read_excel(io.BytesIO(read_zip(r'C:\download\test.xlsx.zip', 'test.xlsx')))
tuples = [tuple(x) for x in df.values]

Преобразовал в кортеж для того, чтобы записать в БД.

Но Timestamp записывает не правильно в БД, из-за этого мне придется преобразовать в string.


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

Автор решения: MaxU

Попробуйте так:

import cx_Oracle
from cx_Oracle import makedsn
from sqlalchemy import create_engine


usr = "test"
pwd = "my_oracle_password"
dsn = makedsn("ora_scan_or_hostname", 1521, service_name="my_service_name")

df = pd.read_excel(io.BytesIO(read_zip(r'C:\download\test.xlsx.zip', 'test.xlsx')), 
                   parse_dates=['your_date_column_name'])

engine = create_engine(f'oracle+cx_oracle://{usr}:{pwd}@{dsn}')

df.to_sql('table_name', engine, if_exists='append')
→ Ссылка