44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | from ds.db import db | |||
|  | from schema.device_action_schema import DeviceActionCreate, DeviceActionResponse | |||
|  | from mysql.connector import Error as MySQLError | |||
|  | 
 | |||
|  | 
 | |||
|  | # 新增设备操作记录 | |||
|  | def add_device_action(client_ip: str, action: int) -> DeviceActionResponse: | |||
|  |     """
 | |||
|  |     新增设备操作记录(内部方法、非接口) | |||
|  |     :param action_data: 含client_ip和action(0/1) | |||
|  |     :return: 新增的完整记录 | |||
|  |     """
 | |||
|  |     conn = None | |||
|  |     cursor = None | |||
|  |     try: | |||
|  |         conn = db.get_connection() | |||
|  |         cursor = conn.cursor(dictionary=True) | |||
|  | 
 | |||
|  |         # 插入SQL(id自增、依赖数据库自动生成) | |||
|  |         insert_query = """
 | |||
|  |             INSERT INTO device_action  | |||
|  |             (client_ip, action, created_at, updated_at) | |||
|  |             VALUES (%s, %s, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) | |||
|  |         """
 | |||
|  |         cursor.execute(insert_query, ( | |||
|  |             client_ip, | |||
|  |             action | |||
|  |         )) | |||
|  |         conn.commit() | |||
|  | 
 | |||
|  |         # 获取新增记录(通过自增ID查询) | |||
|  |         new_id = cursor.lastrowid | |||
|  |         cursor.execute("SELECT * FROM device_action WHERE id = %s", (new_id,)) | |||
|  |         new_action = cursor.fetchone() | |||
|  | 
 | |||
|  |         return DeviceActionResponse(**new_action) | |||
|  | 
 | |||
|  |     except MySQLError as e: | |||
|  |         if conn: | |||
|  |             conn.rollback() | |||
|  |         raise Exception(f"新增记录失败: {str(e)}") from e | |||
|  |     finally: | |||
|  |         db.close_connection(conn, cursor) |