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()方法, ...
随机推荐
- Xshell5 安装JDK
.执行命令yum -y list java*查看可安装java版本.执行成功后可以看见如下的结果 安装java-1.8全部相关 yum install -y java-1.8.0-openjdk* 使 ...
- [提权]mysql中的UDF提权
由于udf提权是需要构造UDF函数文件的,涉及到了写文件.所以本次实验已经将mysql的配置做了改动:–secure-file-priv=''. 剧情须知: secure_file_priv 为 NU ...
- 【Python 代码】CS231n中Softmax线性分类器、非线性分类器对比举例(含python绘图显示结果)
1 #CS231n中线性.非线性分类器举例(Softmax) #注意其中反向传播的计算 # -*- coding: utf-8 -*- import numpy as np import matplo ...
- 反手来个K8S入门到跑路
layout: post title: 反手来个K8S入门到跑路 category: linux date: 2019-06-09 tags: linux k8s 反手来个K8S入门到跑路 前言 放假 ...
- 生产者消费者模型Java实现
生产者消费者模型 生产者消费者模型可以描述为: ①生产者持续生产,直到仓库放满产品,则停止生产进入等待状态:仓库不满后继续生产: ②消费者持续消费,直到仓库空,则停止消费进入等待状态:仓库不空后,继续 ...
- JavaScript 如何工作的: 事件循环和异步编程的崛起 + 5 个关于如何使用 async/await 编写更好的技巧
原文地址:How JavaScript works: Event loop and the rise of Async programming + 5 ways to better coding wi ...
- C# 复制数组容易踩到的坑--引用类型与值类型
原文链接:https://my.oschina.net/u/3744313/blog/1794235 笔者近期做的项目里大量使用了数组,而在使用过程中,笔者曾经遇到了一个比较低级的问题:如何将一个数组 ...
- scrapy 爬虫教程
http://python.jobbole.com/87284/ 这篇教程不错,后面的参考链接很好 另外,注意xpath的坑,用chrome的网页调试工具会对xpath会自动优化,自己加上tbody, ...
- C# ffmpeg 视频处理
ffmpeg的官网:https://ffmpeg.org/ ffmpeg是一个强大的视频处理软件(控制台程序),可以通过C# 调用ffmpeg,并传入指令参数,即可实现视频的编辑. /// <s ...
- 项目启动报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wuhongyu.mapper.OrdersMapper.selectByExample
在用maven配置mybatis环境时出现此BindingExceptiony异常,发现在classes文件下没有mapper配置文件,应该是maven项目没有扫描到mapper包下的xml文件, 在 ...