python查询db2数据库数据_Python3-ibm_db模块-数据库操作之DB2
官方文档模块安装Windows使用PyCharm安装:File -> Settings -> Project: xxx -> Project InterpreterWindows下手动安装1.解压 ibm_db-2.0.7.tar.gzntx64_odbc_cli.zip 并把 clidriver目录放到 ibm_db-2.0.7 目录下2.运行 cmd 至 解压后的目录python se...
官方文档
模块安装
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安装感觉有点慢,因为需要去官网下载驱动包,我是提前下好进行手动安装:
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
代码示例


importibm_db#连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"conn=Nonetry:#连接数据库
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)exceptException as ex:print(ex)finally:#关闭数据库
ibm_db.close(conn)
自动提交-增-INSERT、删-DELETE、改-UPDATE


importibm_db#连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"conn=Nonetry:#连接数据库
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)exceptException as ex:#回滚事务
ibm_db.rollback(conn)finally:#关闭数据库连接
ibm_db.close(conn)
手动提交-增-INSERT、删-DELETE、改-UPDATE


importibm_db#连接字符串
connStr = "DATABASE=MSJ;HOSTNAME=13.13.13.123;PORT=50000;PROTOCOL=TCPIP;UID=username;PWD=password;"conn=Nonetry:#连接数据库
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没办法一次提取多行,提取多行数据,需要循环提取
exceptException as ex:print(ex)finally:
ibm_db.close(conn)
查-SELECT
更多推荐




所有评论(0)