官方文档

  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%\Lib\site-packages\ibm_db-2.0.7-py3.5.egg下 

  Linux

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

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

    1. tar -zxvf ibm_db-2.0..tar.gz

    2. tar -zxvf linuxx64_odbc_cli.tar.gz

    3. cd ibm_db-2.0.

    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./site-packages/ibm_db-2.0.-py3.-linux-x86_64.egg/clidriver

代码示例

  1. import ibm_db
  2.  
  3. # 连接字符串
  4. connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
  5. conn = None
  6. try:
  7. # 连接数据库
  8. conn = ibm_db.connect(connStr, "", "")
  9. # 以插入语句为例,删除和更新只需要替换语句即可
  10. sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
  11. # 执行SQL语句
  12. stmt = ibm_db.exec_immediate(conn, sql)
  13. # 获取受影响的行数
  14. rows = ibm_db.num_rows(stmt)
  15. except Exception as ex:
  16. print(ex)
  17. finally:
  18. # 关闭数据库
  19. ibm_db.close(conn)

自动提交-增-INSERT、删-DELETE、改-UPDATE


  1. import ibm_db
  2.  
  3. # 连接字符串
  4. connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
  5. conn = None
  6. try:
  7. # 连接数据库
  8. conn = ibm_db.connect(connStr, "", "")
  9. # 关闭自动提交
  10. ibm_db.autocommit(conn, ibm_db.SQL_AUTOCOMMIT_OFF)
  11. # 以插入语句为例,删除和更新只需要替换语句即可
  12. sql = "insert into tab_student values('%s', '%s')" % (1, "Jet")
  13. # 执行SQL语句
  14. stmt = ibm_db.exec_immediate(conn, sql)
  15. # 获取受影响的行数
  16. rows = ibm_db.num_rows(stmt)
  17. # 提交事务
  18. ibm_db.commit(conn)
  19. except Exception as ex:
  20. # 回滚事务
  21. ibm_db.rollback(conn)
  22. finally:
  23. # 关闭数据库连接
  24. ibm_db.close(conn)

手动提交-增-INSERT、删-DELETE、改-UPDATE


  1. import ibm_db
  2.  
  3. # 连接字符串
  4. connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"
  5. conn = None
  6. try:
  7. # 连接数据库
  8. conn = ibm_db.connect(connStr, "", "")
  9. # -------------------执行语句有两种方式-----------------------#
  10. # 1、采用立即执行的方式,不支持 ? 占位符,只能采取拼接字符串的方式,且字符串类型的数据一定要有单引号
  11. sql = "SELECT * FROM TAB_USER WHERE MOBILE = '%s';" % ""
  12. stmt = ibm_db.exec_immediate(conn, sql)
  13. result = ibm_db.fetch_both(stmt) # 提取结果
  14. print(result)
  15.  
  16. # 2、采用预编译的方式,支持 ? 占位符
  17. sql = "SELECT * FROM TAB_USER WHERE MOBILE= ?"
  18. sql_args = ("",)
  19. stmt = ibm_db.prepare(conn, sql) # 预编译
  20. ibm_db.execute(stmt, sql_args) # 执行
  21. result = ibm_db.fetch_row(stmt)
  22. print(result)
  23. # -------------------提取查询结果有四种方式-----------------------#
  24. # 1.先调用fetch_row(stmt),有结果返回true否则返回false,再调用ibm_db.result(stmt, col_idx)提取结果
  25. # ibm_db.fetch_row(stmt)
  26. # result = ibm_db.result(stmt, 0)
  27.  
  28. # 2.调用fetch_both(stmt)提取一行,返回的结果是一个字典,取值可以用列名或索引 result["MOBILE"]或 result[0]
  29. # result = ibm_db.fetch_both(stmt)
  30.  
  31. # 3.调用fetch_assoc(stmt)提取一行,返回的是一个字典,取值只能用列明 result["MOBILE"]
  32. # result = ibm_db.fetch_assoc(stmt)
  33.  
  34. # 4.调用fetch_tuple(stmt)提取一行,返回的是一个元组,取值只能用索引 result[0]
  35. # result = ibm_db.fetch_tuple(stmt)
  36.  
  37. # 注: ibm_db没办法一次提取多行,提取多行数据,需要循环提取
  38. except Exception as ex:
  39. print(ex)
  40. finally:
  41. ibm_db.close(conn)

查-SELECT


Python3-ibm_db模块-数据库操作之DB2的更多相关文章

  1. day6常用模块,数据库操作

    一.循环调用函数    map() 二.列表推导式和生成器 三.filter过滤器 四.os模块 五.datetime模块 六.random模块 七.写日志,导入nnlog模块 八,发邮件 九,操作数 ...

  2. Python3-cx_Oracle模块-数据库操作之Oracle

    模块安装 1.安装cx_Oracle模块之前必须要安装Oracle客户端,否则无法使用 2.系统上需要装有对应版本的c++编译套件(Linux下:g++ Windows下:VC++) 参考文档 htt ...

  3. Python3-pymysql模块-数据库操作之MySQL

    博客转载 http://www.cnblogs.com/alex3714/articles/5950372.html 代码示例 import pymysql conn = None cursor = ...

  4. python 数据库操作类

    #安装PyMySQL:pip3 install PyMySQL   #!/usr/bin/python3   #coding=utf-8   #数据库操作类     from  datetime  i ...

  5. Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式)

    Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式) 一.安装模块pyodbc pip install pyodbc 二.配置odbc数据源 (1).windo ...

  6. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  7. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  8. 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多

    第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多.一对一.多对多 链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.Forei ...

  9. 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查

    Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...

随机推荐

  1. PostgreSQL 索引坏块处理

    今天应用反应有张表查询报错,报错信息如下 back=# select max(create_time) from public.tbl_index_table where create_time> ...

  2. Jenkins - Update information obtained: 不可用 ago;

    Jenkins 添加插件 jenkins plugin提示: Update information obtained: 不可用 ago: 编辑 hudson.model.UpdateCenter.xm ...

  3. C利用time函数实现简单的定时器

    //定时器 #include <stdio.h> #include <time.h> #include <stdlib.h> int main(int num, c ...

  4. 计数器的原理,设计及verilog实现

    若计数器由n个触发器组成,则计数器的位数为n,所能计数的最大模数为2的n次幂.以下为同步二进制加法计数器电路; 驱动方程:状态图 状态方程(此时的Q0,Q1为上一次状态值): 下例是同步4位2进制计数 ...

  5. mysql创建账号、授权、数据导出、导入

    1.账号创建及授权 grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant opti ...

  6. Pytest权威教程26-示例和自定义技巧

    目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stack ...

  7. js中array.some()的用法

    let array=[ { name:'jack', age:'19' }, { name:'rose', age:'19' } ] var box=array.some((value,index)= ...

  8. 移动端滚动选择器mobileSelect.js

    一款多功能的移动端滚动选择器,支持单选到多选.支持多级级联.提供自定义回调函数.提供update函数二次渲染.重定位函数.兼容pc端拖拽等等.. 特性 原生js移动端选择控件,不依赖任何库 可传入普通 ...

  9. git提交报错:Updates were rejected because the tip of your current branch is behind

    提交代码push时报错:上网查询了一下解决办法有很多种,1.使用强制push的方法:(上网查询说这种会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候.) git push -u origin ...

  10. DELPHI给整个项目加编译开关

    DELPHI给整个项目加编译开关 project--options