首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenTelemetry在使用cursor_factory作为NamedTupleCursor时不跟踪SQL语句。

问OpenTelemetry在使用cursor_factory作为NamedTupleCursor时不跟踪SQL语句。
EN

Stack Overflow用户
提问于 2022-03-15 08:28:08
回答 1查看 256关注 0票数 1

请看下面的代码。我在用验光仪追踪。Psycopg2Instrumentor用于PostgreSQL跟踪。这里只跟踪"show server_version“SQL语句。但是execute方法中的SQL语句不会被跟踪。我想是因为使用了NamedTupleCursor cursor_factory。如果删除NamedTupleCursor,它将跟踪主SQL语句。您能帮助我跟踪主SQL语句而不删除NamedTupleCursor吗?

代码语言:javascript
复制
def self.get_connection():
   #conn = create_connection()
   with conn.cursor() as curs:
       curs.execute("show server_version") ---> this sql statement is getting tracked
   return conn

def execute()
   with self.get_connection() as conn:
       with conn.cursor(cursor_factory=NamedTupleCursor) as curs:
           curs.execute("Sql statements"). ---> this sql statement is **not** getting tracked```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 14:11:04

下面是使用Psycopg2Instrumentor进行PostgreSQL跟踪的代码片段。当在游标参数中传递cursor_factory时要更新的检测代码,而不是在连接中设置它。现在,下面的工作对我和跟踪被捕获。

代码语言:javascript
复制
import psycopg2
from opentelemetry.instrumentation.psycopg2 import Psycopg2Instrumentor

Psycopg2Instrumentor().instrument()

#add your cursor factory in connection method
cnx = psycopg2.connect(
        host=host, database=DBname, user=user, password=password, cursor_factory=RealDictCursor)

#remove the cursor factory from cursor method
cursor = cnx.cursor()
cursor.execute("SELECT statement")
cursor.close()
cnx.close()

感谢线程(工厂)和@RaguramGopi

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71479085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档