• Python3-ibm_db模块-数据库操作之DB2


    官方文档

      https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html

    模块安装

      Windows

        使用PyCharm安装:File -> Settings -> Project: xxx -> Project Interpreter

        

        Windows下手动安装

        1.解压 ibm_db-2.0.7.tar.gz  ntx64_odbc_cli.zip 并把 clidriver目录放到 ibm_db-2.0.7 目录下

        2.运行 cmd 至 解压后的目录  python setup.py install   

        3.最后在把clidriver目录放到 %PYTHON_HOME%Libsite-packagesibm_db-2.0.7-py3.5.egg下 

      Linux

        使用pip安装感觉有点慢,因为需要去官网下载驱动包,我是提前下好进行手动安装:

        百度云盘:https://pan.baidu.com/s/1skGhqMD

        1. tar -zxvf ibm_db-2.0.7.tar.gz 

        2. tar -zxvf linuxx64_odbc_cli.tar.gz 

        3. cd ibm_db-2.0.7 

        4. python3 install setup.py 

          安装成功会有一个提示,告诉你要把clidriver驱动包放到其中一个目录中:

          /usr/local/lib/python3.5/site-packages/clidriver

          /usr/local/lib/python3.5/site-packages/ibm_db-2.0.7-py3.5-linux-x86_64.egg/clidriver

        5. mv clidriver/ /usr/local/lib/python3.5/site-packages/ibm_db-2.0.7-py3.5-linux-x86_64.egg/clidriver 

    代码示例

    import ibm_db
    
    # 连接字符串
    connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
    conn = None
    try:
        # 连接数据库
        conn = ibm_db.connect(connStr, "", "")
        # 以插入语句为例,删除和更新只需要替换语句即可
        sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
        # 执行SQL语句
        stmt = ibm_db.exec_immediate(conn, sql)
        # 获取受影响的行数
        rows = ibm_db.num_rows(stmt)
    except Exception as ex:
        print(ex)
    finally:
        # 关闭数据库
        ibm_db.close(conn)
    自动提交-增-INSERT、删-DELETE、改-UPDATE

    import ibm_db
    
    # 连接字符串
    connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
    conn = None
    try:
        # 连接数据库
        conn = ibm_db.connect(connStr, "", "")
        # 关闭自动提交
        ibm_db.autocommit(conn, ibm_db.SQL_AUTOCOMMIT_OFF)
        # 以插入语句为例,删除和更新只需要替换语句即可
        sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
        # 执行SQL语句
        stmt = ibm_db.exec_immediate(conn, sql)
        # 获取受影响的行数
        rows = ibm_db.num_rows(stmt)
        # 提交事务
        ibm_db.commit(conn)
    except Exception as ex:
        # 回滚事务
        ibm_db.rollback(conn)
    finally:
        # 关闭数据库连接
        ibm_db.close(conn)
    手动提交-增-INSERT、删-DELETE、改-UPDATE

    import ibm_db
    
    # 连接字符串
    connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
    conn = None
    try:
        # 连接数据库
        conn = ibm_db.connect(connStr, "", "")
        # -------------------执行语句有两种方式-----------------------#
        # 1、采用立即执行的方式,不支持 ? 占位符,只能采取拼接字符串的方式,且字符串类型的数据一定要有单引号
        sql = "SELECT * FROM TAB_USER WHERE MOBILE = '%s';" % "13911111111"
        stmt = ibm_db.exec_immediate(conn, sql)
        result = ibm_db.fetch_both(stmt)    # 提取结果
        print(result)
    
        # 2、采用预编译的方式,支持 ? 占位符
        sql = "SELECT * FROM TAB_USER WHERE MOBILE= ?"
        sql_args = ("13911111111",)
        stmt = ibm_db.prepare(conn, sql)    # 预编译
        ibm_db.execute(stmt, sql_args)      # 执行
        result = ibm_db.fetch_row(stmt)
        print(result)
        # -------------------提取查询结果有四种方式-----------------------#
        # 1.先调用fetch_row(stmt),有结果返回true否则返回false,再调用ibm_db.result(stmt, col_idx)提取结果
        # ibm_db.fetch_row(stmt)
        # result = ibm_db.result(stmt, 0)
    
        # 2.调用fetch_both(stmt)提取一行,返回的结果是一个字典,取值可以用列名或索引 result["MOBILE"]或 result[0]
        # result = ibm_db.fetch_both(stmt)
    
        # 3.调用fetch_assoc(stmt)提取一行,返回的是一个字典,取值只能用列明 result["MOBILE"]
        # result = ibm_db.fetch_assoc(stmt)
    
        # 4.调用fetch_tuple(stmt)提取一行,返回的是一个元组,取值只能用索引 result[0]
        # result = ibm_db.fetch_tuple(stmt)
    
        # 注: ibm_db没办法一次提取多行,提取多行数据,需要循环提取
    except Exception as ex:
        print(ex)
    finally:
        ibm_db.close(conn)
    查-SELECT 

  • 相关阅读:
    XmlNode中Value和InnerText的区别
    C# 后台POST和GET 获取数据
    XDocument简单入门
    一个基于jQuery的简单树形菜单
    使用C#的HttpWebRequest模拟登陆网站
    JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    height、clientHeight、scrollHeight、offsetHeight区别
    使用httpwebrequest Post数据到网站
    sql语句中left join、inner join中的on与where的区别
    SQL Join的一些总结
  • 原文地址:https://www.cnblogs.com/haitaoli/p/10981206.html
Copyright © 2020-2023  润新知