小编Yur*_*iak的帖子

如何从 sqlalchemy 中的方言特定类型获取通用数据类型?

我想创建一个将方言特定的数据库类型映射到通用 sqlalchemy 数据库类型的函数。

例如:我试图从 OracleDB 表获取数据类型,然后使用收到的元数据在 MySql DB(或其他)中创建一个表。我正在获取特定于方言的列类型。

以下是创建 OracleDB 表的最少代码:

create table test_test(id int, num_int number(10), num_float number(10,4), dt date, ts timestamp, str varchar2(100), fl float);

insert into test_test(id) values(1);
Run Code Online (Sandbox Code Playgroud)

接收数据库表列类型

from pprint import pprint
from sqlalchemy import sessionmaker, create_engine

engine = create_engine(...)
session = sessionmaker()
session.configure(bind=engine)
session = session()
res = session.execute('select * from test_test where 1 = 2')
columns = res.cursor.description
pprint(columns)
Run Code Online (Sandbox Code Playgroud)

输出

[('ID', <cx_Oracle.DbType DB_TYPE_NUMBER>, 39, None, 38, 0, 1),
 ('NUM_INT', <cx_Oracle.DbType DB_TYPE_NUMBER>, 11, None, 10, …
Run Code Online (Sandbox Code Playgroud)

python orm types metadata sqlalchemy

4
推荐指数
1
解决办法
1762
查看次数

标签 统计

metadata ×1

orm ×1

python ×1

sqlalchemy ×1

types ×1