我目前正在使用python和pandas移动一些数据。
在这里,我有点卡住了我可以在现有数据库中读取的数据类型(字节)和SQL Alchemy定义(字符)
例如
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 Char)的列
如何告诉sqlalchemy创建类型为VARCHAR(12 Byte)的列?
查看文档,我看不到关于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
最佳答案
我不知道您使用的工具,但是-就Oracle而言-您在创建表时指定CHAR
或BYTE
,例如
SQL> create table test
2 (col_1 varchar2 (12 char),
3 col_2 varchar2 (12 byte)
4 );
Table created.
看看是否可以做同样的事情。
关于python - 使用SQLALCHEMY设置Oracle VARCHAR2长度i Byte,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54456154/