如何使用BINARY_DOUBLE类型列反映oracle数据库

atu*_*ano 11 python oracle sqlalchemy python-3.x

我试图将现有的oracle数据库反映到sqlalchemy元数据中:

from sqlalchemy import create_engine
from sqlalchemy import MetaData
from sqlalchemy import Table

db_uri = 'oracle://USER:PASS@MYDBTNSNAME'
engine = create_engine(db_uri)

# create a MetaData instance
metadata = MetaData()

# reflect db schema to MetaData
metadata.reflect(bind=engine)
Run Code Online (Sandbox Code Playgroud)

这将返回以下内容:

SAWarning: Did not recognize type 'BINARY_DOUBLE' of column 'column_1'(coltype, colname))
Run Code Online (Sandbox Code Playgroud)

我试图导入本机类型以及方言oracle使用的类型

from sqlalchemy.types import *
from sqlalchemy.dialects.oracle import *
Run Code Online (Sandbox Code Playgroud)

但它似乎不承认BINARY_DOUBLE类型

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-13-b69d481f6a4e> in <module>()
      1 from sqlalchemy.types import *
----> 2 from sqlalchemy.dialects.oracle import *

AttributeError: module 'sqlalchemy.dialects.oracle' has no attribute 'BINARY_DOUBLE'
Run Code Online (Sandbox Code Playgroud)

我使用的是SQLAlchemy,版本为"1.2.1"

atu*_*ano 1

如 sqlalchemy变更日志中所述,此功能已包含在版本 1.2.8 中:

[oracle] [bug] Added reflection capabilities for the oracle.BINARY_FLOAT, oracle.BINARY_DOUBLE datatypes
Run Code Online (Sandbox Code Playgroud)

我已经使用 1.2.18 版本检查过它,现在反射可以工作了。