使用SQLALCHEMY连接到Oracle数据库

前端之家收集整理的这篇文章主要介绍了使用SQLALCHEMY连接到Oracle数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我能够成功连接到sqlite数据库并使用下面的命令集访问特定的表.

from sqlalchemy import create_engine,MetaData,Table,and_

from sqlalchemy.sql import select

from pandas import DataFrame 

db = create_engine('sqlite:///path\\database.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()

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

猜你在找的Oracle相关文章