Преобразование 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')