内容简介
达梦数据库是国产数据库中的姣姣者,在近几年的国产化进程中,尤其是信创产业链中,为撑起国产数据库的一片天发挥越来越大的作用。
本篇介绍使用达梦数据库的基本操作,以及使用python操作达梦数据库的一些知识。
达梦数据库简介:
达梦数据库是国内领先的数据库产品开发服务商,数据库产品涵盖了数据库软件,集群,云计算,大数据等数据库解决方案。
达梦数据库拥有主要产品全部核心源代码的自主知识产权。
达梦数据库基本操作:
表的创建:
语法:
CREATE TABLE 表名(字段名1 类型(长度)[限制],字段名2 类型(长度)[限制],…);。
例如:
SQL> CREATE TABLE employee
(
employee_id INTEGER,
employee_name VARCHAR2(20) NOT NULL,
hire_date DATE,
salary INTEGER,
department_id INTEGER NOT NULL
);
表的插入和查询:
插入:
INSERT INTO employee VALUES
(9999, '王五','2022-10-11 00:00:00', 30000, 666);
执行成功, 执行耗时 1 ms,执行号 15
查询:
SELECT salary,employee_id FROM employee;
执行成功, 执行耗时 1 ms,执行号 16
SALARY
EMPLOYEE_ID
1 30000 9999
数据库表结构的查询:
desc employee;
执行成功, 执行耗时 2 ms,执行号 17
NAME
TYPE$
NULLABLE
1 EMPLOYEE_ID INTEGER Y
2 EMPLOYEE_NAME VARCHAR2(20) N
3 HIRE_DATE DATE Y
4 SALARY INTEGER Y
5 DEPARTMENT_ID INTEGER N
python操作达梦数据库:
达梦(简称DM)数据库提供了dmPython库,用于使用python来访问数据库。dmPython是 DM提供的依据Python DB API version 2.0中API 使用规定而开发的数据库访问接口。dmPython实现这些API,使Python应用程序能够对DM数据库进行访问。
dmPython通过调用DM DPI接口完成python模块扩展。在其使用过程中,除Python标准库以外,还需要 DPI 的运行环境。
dmPython安装
dmPython可以运行在任何安装了python的平台上。可以使用安装包安装,也可以直接用源码安装。另外,需要保证dpi和dmPython版本一致,都是32位或都是64位。
可以使用如下命令很方便地在Windows和Linux操作系统下编译并安装dmPython:
//进入到setup.py所在的源码目录,执行以下命令:
python setup.py install
dmPython接口说明:
1. connect接口:
用于创建与数据库的连接,返回一个connection对象。
用法如下:
dmPython.connect(*args, **kwargs)
dmPython.Connect(*args, **kwargs)
参数说明:
参数为连接属性,所有连接属性都可以用关键字指定,在 connection 连接串中,没有指定的关键字都按照默认值处理。
举例:
import dmPython
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='localhost',
port=5236, autoCommit=True)
下面是常用的connect的参数设置方式:
import dmPython
conn = dmPython.connect('SYSDBA/SYSDBA@localhost:5236')
conn = dmPython.connect('SYSDBA/SYSDBA@localhost')
conn = dmPython.connect('SYSDBA/SYSDBA')
conn = dmPython.connect('SYSDBA')
conn = dmPython.connect('SYSDBA/SYSDBA@localhost:5236', autoCommit=True)
2. DATE接口:
日期类型对象,用于描述列属性。
举例:
from datetime import date
d = date(2022,10,11)
print (d)
import dmPython
conn = dmPython.connect()
cursor = conn.cursor()
cursor.execute("create table test_date(c1 date)")
cursor.execute("insert into test_date values(?)", d)
Seq_params = [(d,), (d,)]
cursor.executemany("insert into test_date values(?)", Seq_params)
cursor.execute("select * from test_date")
cursor.description
cursor.fetchall()
说明:
- d是date类型。
- 创建表test_date,并且c1字段设置为date类型。然后,可以使用插入语句进行记录的插入,使用查询语句进行查询;
- cursor.execute用来执行sql语句。
3.TIME接口:
时间类型对象,用于描述列属性。
举例:
from datetime import time
t = time(12,13,14)
print (t)
import dmPython
conn = dmPython.connect()
cursor = conn.cursor()
cursor.execute("create table test_time(c1 time)")
cursor.execute("insert into test_time values(?)", t)
Seq_params = [(t,), (t,)]
cursor.executemany("insert into test_time values(?)", Seq_params)
cursor.execute("select * from test_time")
cursor.description
cursor.fetchall()
说明:
- time()可以创建一个时间类型的数据;
- time()的返回值对应到数据库中的类型是:time;
- cursor.execute用来执行sql语句。
4. STRING接口:
用于描述DM数据库中的变长字符串类型(VARCHAR/VARCHAR2)。
举例:
import dmPython
dmPython.STRING
conn = dmPython.connect()
cursor = conn.cursor()
vch = 'varchartest'
cursor.execute("create table test_varchar(c1 varchar)")
cursor.execute("insert into test_varchar values(?)", vch)
vch1 = 'testmany' * 2
vch2 = 'testmany' * 5
Seq_params = [(vch1,), (vch2,)]
cursor.executemany("insert into test_varchar values(?)", Seq_params)
cursor.execute("select * from test_varchar")
cursor.description
cursor.fetchall()
说明:
- vch是STRING类型;
- test_varchar表中的c1类型是varchar。可以把vch写入到c1的一条记录中(是通过python代码中国呢的insert语句来实现的);
- cursor.execute用来执行sql语句。
当然,dmPython库还有很多接口,包括事务处理等,这里就不一一描述了。
后记,国产替代刻不容缓,从硬件包括芯片,软件,到应用。尤其是硬件和软件依然还有很多卡脖子的技术需要我们去攻克,任重而道远,加油!!!