programing

BINORY_DOUBLE 유형 열이 있는 Oracle 데이터베이스를 반영하는 방법

javajsp 2023. 9. 21. 20:06

BINORY_DOUBLE 유형 열이 있는 Oracle 데이터베이스를 반영하는 방법

기존 오라클 데이터베이스를 sqalchemy 메타데이터에 반영하려고 했습니다.

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)

그러면 다음이 반환됩니다.

SAWarning: Did not recognize type 'BINARY_DOUBLE' of column 'column_1'(coltype, colname))

native type과 dialog oracle 에서 type을 가져오려고 노력했습니다.

from sqlalchemy.types import *
from sqlalchemy.dialects.oracle import *

그러나 그것은 인식하지 못하는 것 같습니다.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'

저는 SQL Lchemy 버전 '1.2.1'을 사용하고 있습니다.

db에서 기본 매핑 관계 재정의를 시도해 보셨습니까?그렇게

from sqlalchemy.dialects.oracle.base import BINARY_DOUBLE

group_table = sa.Table('groups', metadata,
    sa.Column('your_column', BINARY_DOUBLE(asdecimal=True)),
    autoload=True,
    include_columns=[
    'your_column',
    '...'
    ],
)

아니면 그것을 가져오는 것.BINARY_DOBULE부터sqlalchemy.dialects.oracle.base

댓글로 물어보고 싶은데, 방금 가입해서 그렇게 할 수가 없네요.

sqlalchemy changelog에 설명되어 있듯이 이 기능은 버전 1.2.8에 포함되어 있습니다.

[oracle] [bug] Added reflection capabilities for the oracle.BINARY_FLOAT, oracle.BINARY_DOUBLE datatypes

1.2.18 버전으로 확인했고 지금은 리플렉션이 작동합니다.

sqalchemy / DB 드라이버에서 잘 지원되지 않는 열 유형을 사용하려고 합니다.그러니 그런 타입은 피하세요.

(대략) SELECT * FROM base_table로 보기를 작성하고 이진 이중 열을 보다 편리한 숫자 유형으로 캐스팅합니다.그러면 뷰를 반영합니다.

언급URL : https://stackoverflow.com/questions/49450396/how-to-reflect-an-oracle-database-with-binary-double-type-columns