Windows Python 访问达梦数据库(操作示例)
Windows Python 访问达梦数据库(操作示例)
一、前提条件
本篇博客以访问本地达梦数据库(DM8)为基础进行演示。(前提:本地已经安装了 DM8 数据库,并配置了相应的 Python 访问环境!)
关于 Windows 安装达梦数据库,请参考博客:Windows 安装 达梦数据库
关于 Docker 安装达梦数据库,请参考博客:Docker 安装 达梦数据库
关于 JDBC 方式操作达梦数据库,请参考博客:JDBC 方式操作 达梦数据库
关于 MyBatis Plus 操作达梦数据库,请参考博客:MyBatis Plus 操作 达梦数据库
关于 Spring 操作达梦数据库,请参考博客:Spring 操作 达梦数据库
关于 SpringBoot MyBatis Plus 整合达梦数据库,请参考博客:SpringBoot MyBatis Plus 整合 达梦数据库
关于 Python 访问达梦数据库的环境配置,请参考博客:Windows Python 访问达梦数据库(环境配置)
本篇博客使用 PyCharm(推荐使用) 作为开发工具!
二、达梦数据库操作示例
1、连接数据库
dm_conn.py 代码如下:
#!/usr/bin/python
# coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=5236)
cursor = conn.cursor()
print('python: conn success!')
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
运行效果如下:
2、操作数据库(增、删、改、查)
dm_operate.py 代码如下:
#!/usr/bin/python
# coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=5236)
cursor = conn.cursor()
try:
# 清空表,初始化测试环境
cursor.execute('delete from PRODUCTION.PRODUCT_CATEGORY')
except (dmPython.Error, Exception) as err:
print(err)
try:
# 插入数据
cursor.execute("insert into PRODUCTION.PRODUCT_CATEGORY(NAME) values('Java'), ('Python'), ('Go'), ('C')")
print('python: insert success!')
# 删除数据
cursor.execute("delete from PRODUCTION.PRODUCT_CATEGORY where name='Go'")
print('python: delete success!')
# 更新数据
cursor.execute('update PRODUCTION.PRODUCT_CATEGORY set name = \'C++\' where name=\'C\'')
print('python: update success!')
# 查询数据
cursor.execute("select name from PRODUCTION.PRODUCT_CATEGORY")
res = cursor.fetchall()
for tmp in res:
for c1 in tmp:
print(c1)
print('python: select success!')
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
运行效果如下:
本地达梦数据表中的效果如下:
3、数据绑定
dm_bind.py 代码如下:
#!/usr/bin/python
# coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=5236)
cursor = conn.cursor()
try:
# 清空表,初始化测试环境
cursor.execute('delete from PRODUCTION.PRODUCT_CATEGORY')
except (dmPython.Error, Exception) as err:
print(err)
try:
# 插入数据
values = '物理'
cursor.execute("insert into PRODUCTION.PRODUCT_CATEGORY(name) values(?)", values)
print('python: insert success!')
# 查询数据
cursor.execute("select name from PRODUCTION.PRODUCT_CATEGORY")
res = cursor.fetchall()
for tmp in res:
for c1 in tmp:
print(c1)
print('python: select success!')
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
运行效果如下:
本地达梦数据表中的效果如下:
4、多线程
dm_multi_thread.py 代码如下:
#!/usr/bin/python
# coding:utf-8
import dmPython
import _thread
import time
# 为线程定义一个函数
def print_time(threadName, delay):
count = 0
while count < 3:
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost', port=5236)
cursor = conn.cursor()
print("%s: %s" % (threadName, time.ctime(time.time())))
conn.close()
time.sleep(delay)
count += 1
except(dmPython.Error, Exception) as err:
print(err)
# 创建两个线程
try:
_thread.start_new_thread(print_time, ("Thread-1", 1,))
_thread.start_new_thread(print_time, ("Thread-2", 2,))
except (dmPython.Error, Exception) as e:
print("Error: unable to start thread")
print(e)
while 1:
pass
运行效果如下: