2024-04-27 04:33:49 发布
网友
在将最终编译的原始查询字节发送到基础数据库引擎之前,是否可以重写这些字节?我看过Events API,但它似乎没有公开这样的低级事件
用例:我想在所有查询的开头添加一个字符串,其中包含上下文元数据:
/* {"trace_id":"1234","client_ip":"1.2.3.4", ...} */ SELECT ...
数据从数据库的查询日志中提取,并用于将事件与堆栈中的其他服务关联起来
只需将before_cursor_execute事件与retval=True一起使用,如https://github.com/sqlalchemy/sqlalchemy/wiki/Profiling所示
before_cursor_execute
retval=True
@event.listens_for(Engine, "before_cursor_execute", retval=True) def before_cursor_execute(conn, cursor, statement, parameters, context, executemany): statement = "/* {} */ {}".format( json.dumps({ "trace_id": "1234", "client_ip": "1.2.3.4", }), statement ) return statement, parameters
只需将
before_cursor_execute
事件与retval=True
一起使用,如https://github.com/sqlalchemy/sqlalchemy/wiki/Profiling所示相关问题 更多 >
编程相关推荐