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%\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的更多相关文章
- day6常用模块,数据库操作
一.循环调用函数 map() 二.列表推导式和生成器 三.filter过滤器 四.os模块 五.datetime模块 六.random模块 七.写日志,导入nnlog模块 八,发邮件 九,操作数 ...
- Python3-cx_Oracle模块-数据库操作之Oracle
模块安装 1.安装cx_Oracle模块之前必须要安装Oracle客户端,否则无法使用 2.系统上需要装有对应版本的c++编译套件(Linux下:g++ Windows下:VC++) 参考文档 htt ...
- Python3-pymysql模块-数据库操作之MySQL
博客转载 http://www.cnblogs.com/alex3714/articles/5950372.html 代码示例 import pymysql conn = None cursor = ...
- python 数据库操作类
#安装PyMySQL:pip3 install PyMySQL #!/usr/bin/python3 #coding=utf-8 #数据库操作类 from datetime i ...
- Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式)
Python3.x:pyodbc连接Sybase数据库操作(Windows系统下DNS模式) 一.安装模块pyodbc pip install pyodbc 二.配置odbc数据源 (1).windo ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化
第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...
- 第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多、一对一、多对多
第三百零八节,Django框架,models.py模块,数据库操作——链表结构,一对多.一对一.多对多 链表操作 链表,就是一张表的外键字段,连接另外一张表的主键字段 一对多 models.Forei ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
随机推荐
- PostgreSQL 索引坏块处理
今天应用反应有张表查询报错,报错信息如下 back=# select max(create_time) from public.tbl_index_table where create_time> ...
- Jenkins - Update information obtained: 不可用 ago;
Jenkins 添加插件 jenkins plugin提示: Update information obtained: 不可用 ago: 编辑 hudson.model.UpdateCenter.xm ...
- C利用time函数实现简单的定时器
//定时器 #include <stdio.h> #include <time.h> #include <stdlib.h> int main(int num, c ...
- 计数器的原理,设计及verilog实现
若计数器由n个触发器组成,则计数器的位数为n,所能计数的最大模数为2的n次幂.以下为同步二进制加法计数器电路; 驱动方程:状态图 状态方程(此时的Q0,Q1为上一次状态值): 下例是同步4位2进制计数 ...
- mysql创建账号、授权、数据导出、导入
1.账号创建及授权 grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant opti ...
- Pytest权威教程26-示例和自定义技巧
目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stack ...
- js中array.some()的用法
let array=[ { name:'jack', age:'19' }, { name:'rose', age:'19' } ] var box=array.some((value,index)= ...
- 移动端滚动选择器mobileSelect.js
一款多功能的移动端滚动选择器,支持单选到多选.支持多级级联.提供自定义回调函数.提供update函数二次渲染.重定位函数.兼容pc端拖拽等等.. 特性 原生js移动端选择控件,不依赖任何库 可传入普通 ...
- git提交报错:Updates were rejected because the tip of your current branch is behind
提交代码push时报错:上网查询了一下解决办法有很多种,1.使用强制push的方法:(上网查询说这种会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候.) git push -u origin ...
- DELPHI给整个项目加编译开关
DELPHI给整个项目加编译开关 project--options