import jpype import jpype.imports from jpype.types import * import sys def test_database(): """测试达梦数据库连接和查询""" try: # 达梦数据库驱动路径 dm_driver_path = "D:\\dmdbms\\drivers\\jdbc\\DmJdbcDriver18.jar" # 启动JVM jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % dm_driver_path) # 导入Java类 from java.sql import DriverManager, Connection, Statement, ResultSet # 数据库连接信息 url = "jdbc:dm://192.168.0.145:30236?charset=utf8" username = "WATERSHED" password = "WaterShed./1224" # 加载驱动 from dm.jdbc.driver import DmDriver # 建立连接 conn = DriverManager.getConnection(url, username, password) print("✅ 数据库连接成功") # 创建执行语句 stmt = conn.createStatement() # 查询 WATERSHED_MODEL 表 sql = "SELECT model_id, model_name, create_time, update_time FROM WATERSHED_MODEL" print(f"\n执行查询: {sql}") rs = stmt.executeQuery(sql) # 打印查询结果 print("\n查询结果:") print(f"{'模型ID':<8} {'模型名称':<20} {'创建时间':<20} {'更新时间':<20}") print("-" * 80) count = 0 while rs.next(): model_id = rs.getLong("model_id") model_name = rs.getString("model_name") create_time = rs.getTimestamp("create_time") update_time = rs.getTimestamp("update_time") print(f"{model_id:<8} {model_name:<20} {str(create_time):<20} {str(update_time):<20}") count += 1 print(f"\n查询到 {count} 条记录") # 检查是否有记录的创建时间为 null if count > 0: print("\n检查创建时间字段:") stmt2 = conn.createStatement() sql2 = "SELECT COUNT(*) AS null_count FROM WATERSHED_MODEL WHERE create_time IS NULL" rs2 = stmt2.executeQuery(sql2) if rs2.next(): null_count = rs2.getInt("null_count") print(f"创建时间为 null 的记录数: {null_count}") if null_count > 0: print("⚠️ 发现创建时间为 null 的记录") # 尝试更新这些记录的创建时间 print(f"\n尝试更新 {null_count} 条记录的创建时间...") sql3 = "UPDATE WATERSHED_MODEL SET create_time = SYSDATE, update_time = SYSDATE WHERE create_time IS NULL" affected_rows = stmt.executeUpdate(sql3) print(f"成功更新 {affected_rows} 条记录") # 提交事务 conn.commit() print("✅ 事务提交成功") # 关闭资源 rs.close() stmt.close() conn.close() print("\n✅ 测试完成") except Exception as e: print(f"\n❌ 发生异常: {type(e).__name__}: {e}") import traceback print(f"\n堆栈跟踪: {traceback.format_exc()}") finally: # 关闭JVM if jpype.isJVMStarted(): jpype.shutdownJVM() if __name__ == "__main__": test_database()