官方文档

  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

代码示例

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';" % ""
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 = ("",)
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


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. Oracle instr() 字符查找函数

    instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( string1 ...

  2. greenplum 表在各个节点数据的分布情况

    select gp_segment_id,count(*) from table_name group by gp_segment_id;

  3. RegularExpression正则表达式

    1.必須為大寫字母,小寫字母,數字和符號的至少其中3種組合 The new password should contain any three of different syntax which is ...

  4. 转发标签forward

    当执行到<jsp:forward page="相对路径"></jsp:forward>后,会立即结束当前页面的显示,跳转到另一个页面(JSP.HTML.Se ...

  5. 【EF】Entity Framework使用

    一.EF框架之三种模式 Entity Framework是ORMapping的一种具体实现,那ORMapping又是什么呢? ORM--ObjectRelation Mapping,即对象关系映射框架 ...

  6. UOJ73 【WC2015】未来程序

    题目描述:给出输入和暴力程序,求输出.共10个测试点. 测试点1: 输入\(a,b,c\),求\(a\times b \ \mathrm{mod} \ c\) \(a,b,c\)属于long long ...

  7. Mac下打开/usr/local目录

    Mac下/usr/local目录默认是对于Finder是隐藏,如果需要到/usr/local下去,打开Finder,然后使用command+shift+G,在弹出的目录中填写/usr/local就可以 ...

  8. MAC OS 中mount nfs 报错问题.

    记一下 MAC OS 中mount nfs 报错问题. 环境和配置文件 NFS 服务端 Ubuntu 安装 apt install nfs-kernel-server 服务端的配置文件 cat /et ...

  9. Spark设置自定义的InputFormat读取HDFS文件

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/problem_spark_reading_hdfs_serial ...

  10. Intellij IDEA中maven项目打包问题

    学习使用java写项目的时候,java的jar包对我来说是很神奇又很复杂不想去了解的东西,如今形势所迫开始写java项目,做了些了解,也有几个问题. 1.其中一个打包方式 在pom文件中输入如下插件( ...