我能够成功连接到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()