В настоящее время я перемещаю некоторые данные, используя python и pandas.
Здесь я немного застрял в типах данных, которые я могу прочитать в существующей базе данных, в байтовом, а определение SQL Alchemy в Char.
Например
from sqlalchemy.dialects.oracle import VARCHAR2
dtyp = {'COLUMN': VARCHAR2(12)}
df.to_sql(<tableName>, engine.connect(), schema=<schema>, if_exists='replace', index=False, chunksize=1000, dtype=table['dtyp'])
Это создаст столбец на моей целевой базе данных с типом VARCHAR2 (12 символов)
Как я могу сказать sqlalchemy создать столбец с типомVARCHAR (12 байт)?
Просматривая документацию, я не вижу очевидных аргументов в VARCHAR2, которые я могу установить
РЕДАКТИРОВАТЬ Я понял, как создать свой собственный тип
class BYTE_VARCHAR2(types.UserDefinedType):
def __init__(self, precision = 8):
self.precision = precision
def get_col_spec(self, **kw):
return "VARCHAR2(%s Byte)" % self.precision
def bind_processor(self, dialect):
def process(value):
return value
return process
def result_processor(self, dialect, coltype):
def process(value):
return value
return process