sqlcommenter
Contains all the various sqlcommenter-*
implementations.
This website collects cookies to deliver better user experience
pip3 install google-cloud-sqlcommenter[opentelemetry]
import sqlalchemy
from google.cloud.sqlcommenter.sqlalchemy.executor import BeforeExecuteFactory
engine = sqlalchemy.create_engine(...)
listener = BeforeExecuteFactory(
with_db_driver=True,
with_db_framework=True,
with_opentelemetry=True,
)
sqlalchemy.event.listen(engine, 'before_cursor_execute', listener, retval=True)
engine.execute(...) # comment will be added before execution
2021-08-28 02:33:25.287 PDT [57302] LOG: statement: SELECT candidate, time_cast FROM
Votes ORDER BY time_cast DESC /*db_driver='pg8000',framework='sqlalchemy%3A1.4.22',controller='index',route='/',
traceparent='00-5bd66ef5095369c7b0d1f8f4bd33716a-c532cb4098ac3dd2-01',
tracestate='congo%%3Dt61rcWkgMzE%%2Crojo%%3D00f067aa0ba902b7'*/
sql_commenter(sql, attributes):
if contains_sql_comment(sql):
return sql # DO NOT mutate a statement with an already present comment.
serialized_key_value_pairs := []
for each attribute in attributes:
serialized := serialize_key_value_pair(attribute)
if serialized:
serialized_key_value_pairs.append(serialized)
sorted := sort(serialized_key_value_pairs)
concatenated := concatenate(sorted)
final := affix_comment(sql, concatenated)
return final
sql_commenter('SELECT * FROM POSTS, [
traceparent='00-ff19308b1f17fedc5864e929bed1f44e-6ddace73a9debf63-01',
route='posts',
action='index',
controller='posts',
application='SqlcommenterBlogDemo'
])
SELECT * FROM POSTS/*action='index',application='SqlcommenterBlogDemo',
controller='posts',route='/posts',traceparent='00-ff19308b1f17fedc5864e929bed1f44e-6ddace73a9debf63-01'*/
Contains all the various sqlcommenter-*
implementations.