使用SQLAlchemy和cx_Oracle连接到Oracle服务器

问题描述

今天我来找你是因为我想将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'>

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

我正在使用 python 3.8.3 使用 SQLAlchemy 1.3.18 cx_Oracle 8.0.0 (它也在3.7上工作。 6)

祝你有美好的一天!

解决方法

我以这种方式使用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>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...