为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM Database Server 64 V8
【操作系统】:windows11
【CPU】:
【问题描述】*:
SQLAlchemy 2.0.39
dmPython 2.5.8
sqlalchemy_dm 2.0.3
同样的数据库连接信息,dmPython是可以正常连接并插表。
sqlalchemy_dm的安装是安装官方文档教程,在C:\dmdbms\drivers\python\sqlalchemy2.0.0下执行 python setup.py install
pip show sqlalchemy_dm 提示:
EPRECATION: Loading egg at c:\users\wallflower\scoop\persist\python\lib\site-packages\sqlalchemy_dm-2.0.3-py3.12.egg is deprecated. pip 24.3 will enforce this behaviour change. A possible replacement is to use pip for package installation.
使用sqlalchemy连接的代码如下:
from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import datetime
# 数据库连接信息
DB_CONFIG = {
"user": "SYSDBA",
"password": "123456",
"server": "localhost",
"port": 5236,
"schema": "DAILY_INSPECTION",
}
# 创建数据库连接URL
DB_URL = f"dm://{DB_CONFIG['user']}:{DB_CONFIG['password']}@{DB_CONFIG['server']}:{DB_CONFIG['port']}/{DB_CONFIG['schema']}"
try:
# 创建引擎
engine = create_engine(DB_URL)
# 创建基类
Base = declarative_base()
# 定义模型类
class SysPerformance(Base):
__tablename__ = 'SYS_PERFORMANCE'
id = Column(Integer, primary_key=True, autoincrement=True)
system_id = Column(Integer, nullable=False)
system_name = Column(String(100), nullable=False)
menu = Column(String(100), nullable=False)
response_time = Column(Integer, nullable=False)
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
# 插入的数据
new_record = SysPerformance(
system_id=1,
system_name="System A",
menu="Dashboard",
response_time=120
)
# 添加并提交数据
session.add(new_record)
session.commit()
print("数据插入成功!")
except Exception as e:
print(f"操作失败: {e}")
if 'session' in locals():
session.rollback() # 发生异常时回滚事务
finally:
# 关闭会话
if 'session' in locals():
session.close()