Fork me on GitHub

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

 

运行效果如下:

 

posted @ 2023-10-20 14:22  龙凌云端  阅读(685)  评论(0编辑  收藏  举报