python cx oracle期望字符串,unicode或缓冲区对象 [英] python cx oracle expecting string, unicode or buffer object

查看:144
本文介绍了python cx oracle期望字符串,unicode或缓冲区对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在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或缓冲区对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆