简体   繁体   English

使用python连接到DB2

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM