82.python 手动安装ibm_db2步骤

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:UsersyztPycharmProjects	est_envvenvLibsite-packages你的环境的site-packages目录下
    
3.这个时候不要急着退出,
打开cmd,cd到你的ibm_db-3.0.2刚才移动过来ibm_db目录下(我用的是虚拟环境)所以目录的路径是下面这个,
C:UsersyztPycharmProjects	est_envvenvLibsite-packagesibm_db-3.0.2
你的根据自己的配置cd进去之后执行如下命令:
C:UsersyztPycharmProjects	est_envvenvScriptspython.exe setup.py install(我用的虚拟环境)
    
4.这个时候回报错出现第二个需要下载的文件路径如下:(不管是用什么方法都可以只要下下来,解压出来会生成一个clidriver的
文件夹,直接将文件拷贝到C:UsersyztPycharmProjects	est_envvenvLibsite-packagesibm_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:UsersyztPycharmProjects	est_envvenvScriptspython.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:UsersyztPycharmProjects	est_envvenvScriptspython.exe setup.py install(我用的虚拟环境)


7.这个时候你去项目中导包,可能又会报错ImportError: DLL load failed: 找不到指定的模块。这个是因为刚才的clidriver文件夹
需要给,经过第六步生成的这个路径C:UsersyztPycharmProjects	est_envvenvLibsite-packagesibm_db-3.0.2-py3.6.egg
下面赋值一份.之后就可以直接在项目中使用了

注意:
    不要去网上下载人家云盘里面的ibm_db版本包,呢都是以前的版本,db2呢个客户端的.dll文件根本找不到它,跟着你的pip显现的
版本下载即可(否则你可能安装的怀疑人生)

图一:

图二:

链接:https://pan.baidu.com/s/1H0F48AG7J7MHwvwS-eM2zw
提取码:dfq0

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  **
原文地址:https://www.cnblogs.com/liuzhanghao/p/13453021.html