[英]Connect to DB2 using python
I'm using python 2.7 and I want to connect to a DB2 database and insert data into it. 我正在使用python 2.7,我想连接到DB2数据库并将数据插入其中。 Here is what I did so far :
这是我到目前为止所做的:
import sqlalchemy
from sqlalchemy import *
import ibm_db_sa
db2 = sqlalchemy.create_engine('ibm_db_sa://user:pswd@localhost:50001/prm')
metadata = MetaData()
users = Table('users', metadata,
Column('user_id', Integer, primary_key = True),
Column('user_name', String(16), nullable = False),
Column('email_address', String(60), key='email'),
Column('password', String(20), nullable = False)
)
metadata.bind = db2
metadata.create_all()
users_table = Table('users', metadata, autoload=True, autoload_with=db2)
users_table
The problem is when I execute the code above I get this the following error : 问题是当我执行上面的代码时,出现以下错误:
ProgrammingError: (ProgrammingError) ibm_db_dbi::ProgrammingError: [IBM][CLI Driver]
SQL1042C An unexpected system error occurred. SQLSTATE=58004\r SQLCODE=-1042 None None
Can anyone help me to figure this out ? 谁能帮我解决这个问题?
Although problem solved I write my bit as it might be helpful for someone. 尽管问题已解决,但我还是写了一点,因为这可能对某人有所帮助。
In my case LD_LIBRARY_PATH and all lib folders were OK. 就我而言,LD_LIBRARY_PATH和所有lib文件夹都可以。
Reinstalling ibm_db and ibm_db_sa in virtualenv solved issue. 在virtualenv中重新安装ibm_db和ibm_db_sa已解决问题。
pip uninstall ibm_db ibm_db_sa
pip install ibm_db ibm_db_sa
My guess is that ibm_db was installed before there was a DB2 driver installed in system (maybe someone ignored errors/warning). 我的猜测是先在系统中安装了DB2驱动程序之前安装了ibm_db(也许有人忽略了错误/警告)。
It's good to check if you can connect to database with db2cli first 最好检查一下是否可以先使用db2cli连接到数据库
db2cli execsql -connstring "DATABASE=database_name;HOSTNAME=db_host;PORT=50000;PROTOCOL=TCPIP;UID=db_user;PWD=db_pass;"
> select 'db_name' from sysibm.sysdummy1
I finally got it to work by adding LD_LIBRARY_PATH
to environment variables with the value : <YOUR_DB2_HOME>\\SQLLIB\\lib
. 我终于通过将
LD_LIBRARY_PATH
添加到具有以下值的环境变量来使它起作用: <YOUR_DB2_HOME>\\SQLLIB\\lib
。 It works perfectly now. 现在,它可以完美运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.