1.python 手动安装ibm_db2步骤:(在最下面我贴着我下载包的云盘路径,但不保证对你有用)
"""说实话这个包是我见过最恶心的包,整整弄了三天,网上的博客我是服了,驴头不对马嘴,自己写的博客估计以后自己都看不懂么,所以我自己整理了一篇."""
windows:
"""非常遗憾的告诉你,ibm_db2我安装好了之后操作不了数据库,建议使用pyodbc 直接pip可以安装可以操作,这又是一个神坑啊"""
1.在命令pip install ibm_db -i https://pypi.douban.com/simple/,之后你会发现卡住了,但是下面出现了一个下载ibm_db的tar.gz的连接.
2.复制连接到浏览器中,或者出去,不管咋样下到这个包解压之后会出现一个ibm_db-xxx的目录,后面的xxx是版本号,将这个目录
直接拷贝到C:\Users\yzt\PycharmProjects\test_env\venv\Lib\site-packages你的环境的site-packages目录下
3.这个时候不要急着退出,
打开cmd,cd到你的ibm_db-3.0.2刚才移动过来ibm_db目录下(我用的是虚拟环境)所以目录的路径是下面这个,
C:\Users\yzt\PycharmProjects\test_env\venv\Lib\site-packages\ibm_db-3.0.2
你的根据自己的配置cd进去之后执行如下命令:
C:\Users\yzt\PycharmProjects\test_env\venv\Scripts\python.exe setup.py install(我用的虚拟环境)
4.这个时候回报错出现第二个需要下载的文件路径如下:(不管是用什么方法都可以只要下下来,解压出来会生成一个clidriver的
文件夹,直接将文件拷贝到C:\Users\yzt\PycharmProjects\test_env\venv\Lib\site-packages\ibm_db-3.0.2路径下)
https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ntx64_odbc_cli.zip
5.继续执行在cmd中执行C:\Users\yzt\PycharmProjects\test_env\venv\Scripts\python.exe setup.py install,这个
时候会再次报错,这次会出现一个db2_xxx.dll文件找不到,这个是db2的客户端的可执行文件,需要去ibm的网站下载(记住需要注
册账号才能下载),路径如下,看到图了之后选择window64或者linux你随意.进入之后,会出现两个选择框都点着点击继续,然后页
面会出现第二幅图的样子,红框中的是在window上可以点击执行的文件.(红框下面的两个比较坑,下出来解压之后是两个.msm文件不会用)
https://www.ibm.com/support/pages/node/1116777
6.红框中的下载好了之后直接点击运行就可以了,之后直接加入环境变量(随意加,不存在java呢种还需要创建JAVA_HOME变量这种
方式,只要加进去就可以)最后执行下面的命令(cmd中),就安装好了:
C:\Users\yzt\PycharmProjects\test_env\venv\Scripts\python.exe setup.py install(我用的虚拟环境)
7.这个时候你去项目中导包,可能又会报错ImportError: DLL load failed: 找不到指定的模块。这个是因为刚才的clidriver文件夹
需要给,经过第六步生成的这个路径C:\Users\yzt\PycharmProjects\test_env\venv\Lib\site-packages\ibm_db-3.0.2-py3.6.egg\
下面赋值一份.之后就可以直接在项目中使用了
注意:
不要去网上下载人家云盘里面的ibm_db版本包,呢都是以前的版本,db2呢个客户端的.dll文件根本找不到它,跟着你的pip显现的
版本下载即可(否则你可能安装的怀疑人生)
图一:
图二:
linuxs:
关于这个db2数据库我又被恶心了一把
1.安装pyodbc
pip install pyodbc -i https://pypi.douban.com/simple
直接报错:error: command 'gcc' failed with exit status 1
搜索很简单解决: yum install unixODBC unixODBC-devel
2.安装db2 odbc操作客户端工具,window里面有下载连接记得换成linux的就行了
[root@localhost opt]# ls
odbc_cli test.py linuxx64_odbc_cli.tar.gz test2_db2.py
tar -xvf linuxx64_odbc_cli.tar.gz # 直接解压
3.配置环境变量
# db2数据odbc路径配置
export DB2_CLI_DRIVER_INSTALL_PATH=/opt/odbc_cli/clidriver
export LD_LIBRARY_PATH=/opt/odbc_cli/clidriver/lib
export LIBPATH=/opt/odbc_cli/clidriver/lib
export PATH=/opt/odbc_cli/clidriver/bin:$PATH
export PATH=/opt/odbc_cli/clidriver/adm:$PATH
4.配置odbc连接
01:https://www.cnpython.com/qa/74714 # 看这个博客你会知道需要下载db2 odbc操作的东西对没问题就是他
02:但是基本没有odbc关于连接db2的完整配置的博客
[root@localhost opt]# odbcinst -j # 查看unixodbc操作的配置驱动文件
unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini # 这个是driver驱动的文件,配置了它就可以使用驱动了
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini # 注意这个是DNS解析文件(也就是配置好ip,端口他给你解析)
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /usr/local/etc/odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
03:vim /root/odbcadd.txt
[DB2]
Driver = db2
Description = My MS SQL DB2
odbcinst -i -s -f /root/odbcadd.txt -l # 使用这个命令将写的配置文件,加载进去/usr/local/etc/odbc.ini(但是没完)
[root@localhost opt]# cat /usr/local/etc/odbc.ini
[DB2]
Driver = db2
Description = My MS SQL DB2
04:编辑驱动文件,写入如下内容(这个是驱动),driver中的路径需要根据你安装db2_odbc的软件目录确定,我在/opt安装的所以路径如下/opt/odbc_cli/clidriver/lib/libdb2.so
[root@localhost opt]# cat /usr/local/etc/odbcinst.ini
[db2]
Description = DB2 Driver
Driver = /opt/odbc_cli/clidriver/lib/libdb2.so
FileUsage = 1
DontDLClose = 1
05:编写python脚本连接测试
[root@localhost opt]# cat test2_db2.py
import pyodbc
class DB2Opera(object):
def __init__(self, host, user, password, port="50000", database=""):
self.host = host
self.user = user
self.password = password
self.port = int(port)
self.database = database
def conn(self):
self.conn = pyodbc.connect(
'Driver={db2}; ' # 驱动与DNS二选一即可:它对应的是cat /usr/local/etc/odbcinst.ini
# 'DSN=DB2;' # 它对应的是cat /usr/local/etc/odbc.ini(与上面的参数二选一即可)
'Hostname=%s; '
'Port=%s; '
'Protocol=TCPIP; '
'Database=%s; '
'CurrentSchema=schema; '
'UID=%s; '
'PWD = %s;' % (self.host, self.port, self.database, self.user, self.password)
)
self.cur = self.conn.cursor()
print("连接成功")
if __name__ == '__main__':
mysql_obj = DB2Opera("10.20.86.45", "db2inst1", "11111111", database="ca61gm")
mysql_obj.conn()
06:执行成功
[root@localhost opt]# python3 test2_db2.py
连接成功
参考链接:根据后面的星星判断重要程度(越重要星星越多)
https://blog.csdn.net/qq_35342617/article/details/88780545 ***
http://blog.chinaunix.net/uid-8795823-id-2013290.html ****
https://blog.csdn.net/toseekin/article/details/107901810 *
https://www.cnpython.com/qa/74714 *
https://blog.csdn.net/avwjq/article/details/43532853 *****
https://blog.csdn.net/u010587433/article/details/46799037 **