AttributeError: type object ‘String‘ has no attribute ‘RETURNS_CONDITIONAL‘ 错误终极解决方案

想必你看到这个错误的时候你是在python中尝试用sqlalchemy连接DB2数据库,那就没错了,你看我这个帖子就能解决问题。

错误如下:

AttributeError: type object ‘String‘ has no attribute ‘RETURNS_CONDITIONAL‘ 错误终极解决方案_第1张图片

 解决方案如下:

一、想要在python中使用sqlalchemy操作DB2,除了需要安装sqlchemy,还需要安装如下两个包:(先别急着操作,看完我一二三所有步骤之后再去操作,不然你会吃亏)

1、 ibm-db

pip install ibm-db(此包安装可能会卡顿一会儿,被crtl+c了,等一会它就自动安装好了)

2、ibm_db_sa

pip install ibm_db_sa

二、版本警告

sqlalchemy这玩意儿很怪,我最后直接pip install sqlchemy, 没有指定版本,所以一直就报题目中的错,然后我更新了下版本,果然没做任何代码改变就连上了。所以我给出我这三个包的版本组合情况:

SQLAlchemy==1.3.23

ibm-db==3.1.4
ibm-db-sa==0.3.9

三、连接字符串

你可能以为你连接字符串写错了吧,是不是一直在疯狂地找看正确的连接字符串怎么写,我告诉你,你十有八九写的是对的,因为db2和其它mysql一样,都遵循SQLAlchemy的连接字符串规范。连接代码如下:

from sqlalchemy import create_engine

connection_str = "db2+ibm_db://{}:{}@{}:{}/{};".format(config.database.user, config.database.pwd,config.database.host, config.database.port, config.database.db)
self.engine = create_engine(connection_str)

总结

可以大言不惭的说,估计90%的可能性已经解决了你的问题,网上对于这个问题,可能没找到比我更好的解决方案了吧。哈哈哈,是的,以为我也各种搜过了,就是没有,所以本人提供第一个解决贴,相信此贴肯定会爆火,大家点赞!

你可能感兴趣的:(程序设计,数据库,sqlalchemy,DB2)