加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用SQLALCHEMY连接到Oracle数据库

发布时间:2020-12-12 13:18:31 所属栏目:百科 来源:网络整理
导读:我能够成功连接到sqlite数据库并使用下面的命令集访问特定的表. from sqlalchemy import create_engine,MetaData,Table,and_from sqlalchemy.sql import selectfrom pandas import DataFrame db = create_engine('sqlite:///pathdatabase.db')metadata = M
我能够成功连接到sqlite数据库并使用下面的命令集访问特定的表.

from sqlalchemy import create_engine,MetaData,Table,and_

from sqlalchemy.sql import select

from pandas import DataFrame 

db = create_engine('sqlite:///pathdatabase.db')

metadata = MetaData(db)

table = Table('table name',metadata,autoload=True)

我可以使用cx_Oracle库从oracle数据库中获取数据.

但是,当我尝试连接到sqlalchemy中的Oracle数据库时,我收到以下错误

NoSuchTableError: <table name>

我使用了以下命令:

db = create_engine('oracle://username:password@hostname:1521/instance name',echo='debug')

md = MetaData(bind=db)

t = Table('table name',md,autoload=True,schema='schema name')

当我使用以下命令

t= Table('table name',oracle_resolve_synonyms=True)

我收到以下错误:

AssertionError: There are multiple tables visible to the schema,you must specify owner

能否请您理解我哪里错了.

谢谢,

罗希特

解决方法

from sqlalchemy import create_engine
import cx_Oracle

host=hostname
port=port
sid='sid'
user='username'
password='password'
sid = cx_Oracle.makedsn(host,port,sid=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
)

result = engine.execute('select * from TABLE')

for row in result:
    print row

这对我有用.也可以创建一个连接对象

conn = engine.connect()
conn.close()

这将使关闭连接.即使您从本地端口到远程数据库的隧道,这也可以工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读