【问题标题】:Connexion to oracle server with SQLAlchemy and cx_Oracle使用 SQLAlchemy 和 cx_Oracle 连接到 oracle 服务器
【发布时间】:2020-12-02 03:54:49
【问题描述】:

今天我来找你是因为我想将我的 oracle localhost 服务器连接到我的脚本。 所以我有以下代码:

import sqlalchemy
import cx_Oracle

connexion_string=str('oracle+cx_oracle://' + con['sql']['user'] + ':' + con['sql']['password'] + '@' + con['sql']['server'] + ':' + con['sql']['port'] + '/?service_name=' + con['sql']['database'])

try:
   engine = sqlalchemy.create_engine(connexion_string)
   conn = engine.connect()
except Exception as e:
   print(type(e))

使用此代码,我有以下错误:

<class 'sqlalchemy.exc.DatabaseError'>

我不知道为什么它不起作用,如果有人可以帮助我,那应该很好!

我正在使用 SQLAlchemy 1.3.18cx_Oracle 8.0.0python 3.8.3(它也在 3.7. 6)

祝你有美好的一天!

【问题讨论】:

    标签: python oracle sqlalchemy cx-oracle


    【解决方案1】:

    我是这样使用sqlalchemycx_oracle的:

    from sqlalchemy import create_engine
    import cx_Oracle
    
    host="myhost"
    port=myport
    sid='myservicename'
    user='myuser'
    password='mypassword'
    sid = cx_Oracle.makedsn(host, port, service_name=sid)
    
    cstr = 'oracle://{user}:{password}@{sid}'.format(
        user=user,
        password=password,
        sid=sid
    )
    
    engine =  create_engine(
        cstr,
        convert_unicode=False,
        pool_recycle=10,
        pool_size=50,
        echo=True,
        max_identifier_length=128
    )
    
    result = engine.execute('select * from dual')
    
    for row in result:
        print (row)
    
    C:\python>python mytest_sql.py
    2020-08-12 14:14:12,136 INFO sqlalchemy.engine.base.Engine SELECT USER FROM DUAL
    2020-08-12 14:14:12,137 INFO sqlalchemy.engine.base.Engine {}
    2020-08-12 14:14:12,192 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60 CHAR)) AS anon_1 FROM DUAL
    2020-08-12 14:14:12,192 INFO sqlalchemy.engine.base.Engine {}
    2020-08-12 14:14:12,247 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR2(60 CHAR)) AS anon_1 FROM DUAL
    2020-08-12 14:14:12,248 INFO sqlalchemy.engine.base.Engine {}
    2020-08-12 14:14:12,303 INFO sqlalchemy.engine.base.Engine SELECT CAST('test nvarchar2 returns' AS NVARCHAR2(60)) AS anon_1 FROM DUAL
    2020-08-12 14:14:12,304 INFO sqlalchemy.engine.base.Engine {}
    2020-08-12 14:14:12,383 INFO sqlalchemy.engine.base.Engine select value from nls_session_parameters where parameter = 'NLS_NUMERIC_CHARACTERS'
    2020-08-12 14:14:12,383 INFO sqlalchemy.engine.base.Engine {}
    2020-08-12 14:14:12,490 INFO sqlalchemy.engine.base.Engine select * from dual
    2020-08-12 14:14:12,492 INFO sqlalchemy.engine.base.Engine {}
    ('X',)
    
    C:\python>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2020-08-10
    • 2018-05-05
    • 2020-02-06
    • 1970-01-01
    • 2010-09-19
    • 2011-07-06
    相关资源
    最近更新 更多