python3连接达梦8
一、安装python3.8
1.1、安装必要的编译依赖 yum groupinstall "Development Tools" -y yum install openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel tk-devel gcc make -y 1.2、下载并解压python3.8 cd /usr/local/src sudo wget https://www.python.org/ftp/python/3.8.18/Python-3.8.18.tgz tar xzf Python-3.8.18.tgz cd Python-3.8.18 1.3、编译并安装 ./configure --enable-optimizations make altinstall python3.8 --version pip3.8 --version 1.4、创建虚拟环境并激活 python3.8 -m venv myenv source myenv/bin/activate二、驱动安装
cd /dm_data/dmdbms/drivers/python/dmPython/
python3.8 setup.py install
这个报错是因为root没有配置环境变量,配置环境变量重新执行即可。
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm_data/dmdbms/bin"
export DM_HOME="/dm_data/dmdbms"
三、测试dmPython连接数据库
cat testconn.py
import dmPython def connect_database(): try: conn = dmPython.connect( user='SYSDBA', password='Dameng@2025', server='localhost', port=5238 ) print("达梦数据库连接成功!") return conn except (dmPython.Error, Exception) as err: print(f"连接失败: {err}") return None connect_database()四、爬取天气数据插入达梦数据库
cat wttr_in_weather.py
import requests from bs4 import BeautifulSoup import re import json import time from datetime import datetime from datetime import datetime, timezone, timedelta import dmPython datas=[] citys_url=[] con = dmPython.connect(user='SYSDBA',password='Dameng@2025',server='localhost',port=5238) cur = con.cursor() cur.execute("""select city_id,url from shaw.wttr_in_city;""") ids = cur.fetchall() for i in ids: citys_url.append(i) for url in citys_url: resp = requests.get(url[1],verify=False) data = resp.json() bj_date = datetime.now(timezone(timedelta(hours=8))).strftime('%Y-%m-%d') observation_time = data['current_condition'][0]['observation_time'], localObsDateTime = datetime.strptime(f"{bj_date} {observation_time[0]}", "%Y-%m-%d %I:%M %p").strftime("%Y-%m-%d %H:%M:%S") line = ( url[0], data['current_condition'][0]['weatherDesc'][0]['value'], data['current_condition'][0]['winddir16Point'], data['current_condition'][0]['windspeedKmph'], data['weather'][0]['maxtempC'], data['weather'][0]['mintempC'], data['current_condition'][0]['pressure'], data['current_condition'][0]['humidity'], data['current_condition'][0]['precipMM'], data['weather'][0]['astronomy'][0]['sunrise'], data['weather'][0]['astronomy'][0]['sunset'], data['weather'][0]['sunHour'], localObsDateTime, datetime.now().strftime("%Y-%m-%d %H:%M:%S") ) print(line) cur.execute('INSERT INTO shaw.wttr_in_weather VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);', line) con.commit() time.sleep(3) con.close()