db2 是美国ibm公司开发的一套关系型数据库管理系统,它主要的运行环境为unix(包括ibm自家的aix)、linux、ibm i(旧称os/400)、z/os,以及windows服务器版本。今天我们来探讨下如何使用python连接db2数据库
在工作中遇到了这样的情况,项目中需要连接IBM的关系型数据库(DB2),关于这方面的库比较稀少,其中
ibm_db
是比较好用的一个库,网上也有教程,但是好像不准确,也不太详细,错误百出,没办法只能拿到后自己分析源码,总算搞定。
环境需求:
首先是数据库DB2,下载连接直接百度,我下载是这两个文件:
只下载箭头所指即可,我还没在linux上做测试。
数据库API(这个东西找了好久,终于找到了合适的)(找不到搜:SQLAPI.zip)
Python2.7
VCForPython2.7
ibm_db(主要的库,在安装中会下载ntx64_odbc_cli库,安装时会检测
IBM_DB_HOME
变量,所以需要安装数据库后再安装ibm_db)
以上模块在网上都可以找到,请自行下载安装。
数据库安装好之后新建一个实例,默认是DB2,然后创建一个新的数据库,我创建的MYTEST(在操作数据库以及链接数据库需注意大小写),命令行方法:
打开命令行处理器:(管理员身份)
输入? 直接回车,会显示命令列表,开启数据库管理器:
然后关闭就好,建立数据库以及创建表还是使用db2 data studio,比较方便,安装时在根目录创建一个临时目录,把文件解压进去,之后再修改install.exe的属性,改成兼容Windows 7运行,同时使用管理员权限打开,之后就是安装安装好之后点击左侧新建一个数据库。
按以上方式填写,用户名和密码使用安装数据库时设置的用户名密码。
实例配置好并且能测试成功就可以创建数据库了。
数据库名称和别名写上即可,其余的由于是测试就不填了,等正式环境在考察下性能优化方面的配置。点击运行创建,过程有点慢,不知道是不是机器配置原因,大概花了十几分钟。
下面就不详细说建表的过程了,值需注意,建表前先简历模式(Schema),使用自定义模式建表。
连接直接导入库
导入ibm_db_dbi即可。
import ibm_db_dbi
conn = ibm_db_dbi.connect(“PORT=50000;PROTOCOL=TCPIP;”, host=db[“host”], database=db[“database”], user=db[“user”],
password=db[“passwd”])
conn.set_autocommit(True)
cursor = conn.cursor()
登录后复制
连接数据库,设置自动提交
查询
sql = “select * from testable”
result = cursor.execute(sql)
登录后复制
注意,以上查询方式是错的。正确如下:
sql = “select * from MYSCHEMA.TESTTABLE”
result = cursor.execute(sql) rows = cursor.fetchall()
登录后复制
这里的操作和MySQL没什么差别了
这个地方被坑了好几个小时,T_T
插入
sql = “insert into MYSCHEMA.TESTTABLE (“uuid”, “content”) values (‘%s', %s)” % (“1234567890”, “asdfghjkl”)
result = cursor.execute(sql)
登录后复制
更新
sql = “update \”MYSCHEMA\”.\”TESTTABLE \” set \”content\” = ‘%s' where \”uuid\” = ‘%s'” % (
“aaa”, “1234567890”)
result = cursor.execute(sql)
登录后复制
如果操作成功,result就是True,注意每个语句的引号,单双必须按以上的方式。
以上就是本文给大家分享的使用Python连接DB2数据库的全部内容了,希望对小伙伴们能够有所帮助。
更多Python连接DB2数据库相关文章请关注PHP中文网!
PHP数组从URL参数中获取的行为不如预期
我有一个包含类别ID的URL参数,我想将其视为一个数组,如下所示:http://example.com?cat[]=3,9,13在PHP中,我使用它从URL参数获取数组:$catI...
P粉785905797来自于2024-04-06 22:09:02
通过添加 Width 属性将内容向左移动
我已经为主体提供了边距。主要{左边缘:200px;右边距:200px;文本对齐:居中}由于我想以两行而不是一行显示文本,因此我在样式中添加了width属性。.p{字体大小:12px...
P粉738046172来自于2024-04-06 22:01:35
我应该在 apache 中哪里放置 CustomLog 指令
我正在使用php:7.2-apachedocker。我需要禁用运行状况检查url登录访问日志。基于此链接,他们提到了有关修改Customlog指令的信息。我不是关于需要更改Cust...
P粉573809727来自于2024-04-06 22:03:59
返回值中变量的格式是什么?
我是php的新学习者。我发现有一段代码:if($x<time()){return[false,'error'];}逻辑或变量并不重要,但我不明白[false,'error']...
P粉757556355来自于2024-04-06 21:55:20