问题:python(superset)如何连接达梦数据库?sqlalchemy如何连接dm8?
解决:需要两个驱动dmPython,sqlalchemy_dm
方法:
1、复制dmPython,sqlalchemy等文件夹(本人superset和达梦数据库不在同一服务器,所以需要复制)
cd /opt/dm8 // 本人达梦数据库安装服务器
mkdir fakedm8
cp -r ./bin ./fakedm8
cp -r ./include ./fakedm8
cp -r ./drivers/python/dmPython/ ./fakedm8
// 注意:使用2.0.0报错AttributeError: type object 'DMDialect_dmPython' has no attribute 'dbapi'
// 使用1.1.10时报错AttributeError: 'DMExecutionContext_dmPython' object has no attribute 'compiled_parameters'
cp -r ./drivers/python/sqlalchemy1.4.6/ ./fakedm8
scp -r fakedm8/ hadoop01:~/ // 将复制的文件夹传送到superset服务器
2、配置fakedm8路径
mv ~/fakedm8/ /opt/module/
vim ~/.bash_profile // 加入下面三行内容
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/module/fakedm8/bin"
export DM_HOME="/opt/module/fakedm8"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
source ~/.bash_profile
3、安装dmPython,sqlalchemy_dm,注:需要使用superset(.venv)环境的python,并到相应目录下,安装前必须先执行了第2步,如果tmux的话,必须是在当前会话source ~/.bash_profile
cd /opt/module/fakedm8/dmPython
python setup.py install
cd /opt/module/fakedm8/sqlalchemy1.4.6
python setup.py install
4、重启superset
superset.sh restart // 这个shell脚本请自己写或者手动kill superset进程
5、superset连接达梦的字符串
注意:此处schema不能当作数据处用/myschema
dm+dmPython://SYSDBA:SYSDBA@hadoop02:5236?schema=myschema
注意:连接的数据库需要指定primary key
测试通过:
环境:ubuntu
安装软件:sqalchemy==1.4.50
dmPython、sqlalchemy1.4.6 是从x86,Redhat7安装文件中找的,测试从windows安装文件中找无用
sqlalchemy连接dm测试
from sqlalchemy import create_engine
engine = create_engine('dm+dmPython://SYSDBA:SYSDBA@localhost:5236')
dmPython连接dm测试
import dmPython
cursor = dmPython.connect(user='SYSDBA', password='SYSDBA', server='127.0.0.1', port='5236', autoCommit=True).cursor()
#可以直接cursor = dmPython.connect()进行连接也可以cursor = dmPython.Connect()进行连接,三者完全等价。
city = cursor.execute('select * from DMHR.CITY')
注:
如果报错ImportError: libdmdpi.so: cannot open shared object file: No such file or directory
这是因为在当前tmux tab中没有运行source ~/.bash_profile
参考:
https://blog.csdn.net/it_farmer_01_17/article/details/130631766
https://blog.csdn.net/qqQi_/article/details/133064594 sqlalchemy连接操作数据库测试
https://blog.csdn.net/qq_43350987/article/details/120871363 dmPython连接操作数据库测试