初次运行报错,遇到的问题是:
TypeError:'twophase' is an invalid keyword argumet for this function
解决问题参考博主:https://blog.csdn.net/DYyunzhongxian/article/details/102521288/
主要问题是版本问题,要升级一下cx_oracle、sqlalchemy
查看cx_oracle
升级了一下sqlalchemy
接着第二个问题报错:
sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
这个问题主要是没有搜索到监听
根据网上搜索的文章重新设置监听https://www.jb51.net/article/91184.htm
这个是配置完了的tnsnames.ora文件 可以看到我当时配置的ORCL服务名(文件位置D:\app\EDZ\product\11.2.0\dbhome_1\NETWORK\ADMIN)
但是不知道为什么,用cx_oracle的这种写法测试,仍然报错
conn = cx_Oracle.connect("testdb","123456",'192.168.31.72:1251/ORCL')
但这种写法就可以了
# dsn=cx_Oracle.makedsn('192.168.31.72','1521','ORCL')
# conn = cx_Oracle.connect("testdb","123456",dsn,encoding='UTF-8'
SQLAlchemy # 导入扩展类 里面是这个样子写的!!!
app.config['SQLALCHEMY_DATABASE_URI'] = 'oracle+cx_oracle://testdb:123456@localhost:1521/ORCL'