flask后端与国产达梦数据库的联合

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、安装

官方下载达梦安装包

dmPython安装官网教程

SQLAlchemy

二、docker安装达梦数据库

官网docker安装达梦数据库,按这个官网步骤来就可以安装成功
其中一些解释
docker run -d -p 30236:5236 --restart=always --name dm8_test --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=dm8_test -v /data/dm8_test:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64

-p 30236:5236: 这个选项指定了容器内部端口和主机端口之间的映射关系。在这里,容器内部的端口是 5236,而主机上的端口是 30236。这样一来,主机上的流量会被导向到容器内部的端口上。
--name dm8_test: 这个选项指定了容器的名称为 dm8_test
-v /data/dm8_test:/opt/dmdbms/data: 这个选项用于将主机上的目录 /data/dm8_test 映射到容器内部的 /opt/dmdbms/data 目录,以便容器可以访问主机上的数据。
dm8_single:dm8_20230808_rev197096_x86_rh6_64: 这是所使用的 Docker 镜像的名称和标签,用于从 Docker Hub 或本地仓库中获取镜像并创建容器。在这里,dm8_single 是镜像名称,dm8_20230808_rev197096_x86_rh6_64 是镜像的标签。

命令行进入达梦数据库

#进入达梦容器里
docker exec -it dm8_test bash
#切换到/opt/dmdbms/bin目录
cd /opt/dmdbms/bin
#然后执行登录命令,./disql 是达梦数据库的命令行工具,用于与数据库进行交互。SYSDBA 是管理员用户名,而 SYSDBA001 是管理员的密码。Docker镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA001
./disql SYSDBA/SYSDBA001

此时如下图:
在这里插入图片描述
现在就已经进入sql操控SYSDBA管理员用户达梦数据库的界面
在这里插入图片描述
这个目录下的data就是存放的表单的数据,log就是日志

python中连接操控数据库:

import dmPython
import pandas as pd
# 建立数据库连接,注意这个ip是docker主机的ip,因为docker默认会绑定其主机的一张网卡
conn = dmPython.connect(user='SYSDBA', port=30236, server='服务器ip', password='用户密码')
# 获取游标
cursor = conn.cursor()
conn.commit()  # 记得要提交你的更改
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

四、flask后端连接达梦

把这个config加载到app就行

  class Config:
    #  默认数据库(主数据库)
    SQLALCHEMY_DATABASE_URI= 'dm+dmPython://用户名:密码@ip:端口'

三、遇到的bug

一切装好之后发现flask端通过SQLAlchemy还是连接不上达梦,cmd终端python环境下输入pip list观察包如下:
包已经正确安装并版本号一致
包已经正确安装并版本号一致!而且观察到vs code python环境和cmd终端python环境一致。
在vs pip list发现:
在这里1插入图片描述
vs终端里找不到方言SQLAlchemy_dm,就很奇怪,估计是卡bug了?不太懂
之后通过cd到那个方言SQLAlchemy_dm路径,直接安装在了vs所配python环境下,成功连接!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值