我试图在python中运行以下代码段以连接到oracle,但始终遇到以下错误。我尝试了很多组合,但似乎不起作用。我了解错误,但不了解此处存在哪些不兼容之处。 有人遇到过这个问题吗?我如何解决它?
I am trying to run following code snippet in python to connect to oracle, but constantly running into following error. I have tried a lot of combinations but it doesn't seem to work. I understand the error, but don't understand what is incompatible here. Has anyone come across this issue? How do I fix it?
文件 /,第1行,位于文件 /workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/engine/base中。 py,行1613,在执行中
File "", line 1, in File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1613, in execute
connection = self.contextual_connect(close_with_result=True) File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1661, in contextual_connect self.pool.connect(), File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 326, in connect return _ConnectionFairy(self).checkout() File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 485, in __init__ rec = self._connection_record = pool._do_get() File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 770, in _do_get return self._create_connection() File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 279, in _create_connection return _ConnectionRecord(self) File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 372, in __init__ self.connection = self.__connect() File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/pool.py", line 433, in __connect connection = self.__pool._creator() File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 80, in connect return dialect.connect(*cargs, **cparams) File "/workplace/applications/python2.7/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 283, in connect return self.dbapi.connect(*cargs, **cparams) TypeError: expecting string, unicode or buffer object from sqlalchemy.ext.declarative import declarative_base; from sqlalchemy import create_engine; engine = create_engine(u'oracle+cx_oracle://localhost:1521/orcl', echo=True) result = engine.execute(u"select 1 from dual");设置:
Setup:
Python 2.7 SqlAlchemy 0.9.7和0.8.7 Cx Oracle(最新版本) Oracle数据库10g版本10.2.0.2.0
Python 2.7 SqlAlchemy 0.9.7 and 0.8.7 Cx Oracle (latest version) Oracle Database 10g Release 10.2.0.2.0
推荐答案如果遇到此问题,最有可能的原因是您没有传入基础dbapi调用所需的参数。
If you are running into this problem, most likely the cause is that you are not passing in arguments required by the underlying dbapi call.
在我的情况下,我将用户,密码和dsn的其他参数与现有参数一起添加到create_engine调用中,该参数传递给cx_oracle调用并且可以使用。
In my case I added additional arguments of user, password and dsn to the create_engine call along with existing ones, which got passed to cx_oracle call and it worked.
类似的东西应该起作用
create_engine(u'oracle+cx_oracle://localhost:1521/orcl', echo=True, user='<>', password='<>', dsn='<>')更多推荐
python cx oracle期望字符串,unicode或缓冲区对象
发布评论