用例 - 需要在 Postgres 日志中記錄來自 Python/Flask/Sqlalchemy 的經??過身份驗證的用戶(而不是資料庫用戶)。
目前,我已使用以下格式使用 postgres.conf 啟用 Postgres 日志。
log_line_prefix = 'time=%t, %q db=%d, user=%u, ip=%h, app=%a'
這將在 postgres.csv 中記錄以下格式。
2021-11-17 09:56:18.856 GMT,"db_user_name","database_name",4962,"10.0.0.2:52068",6194d1c2.1362,16,"idle in transaction",2021-11-17 09:56:18 GMT,3/12392,0,LOG,00000,"statement: Query,,,,,,,,,"AppName"
我想到了以下方法:
- 將用戶名動態連接到應用程式名稱。
- 試圖找到向查詢添加一些元資料(用戶名)的方法。
- 撰寫一個 sql 函式在每個查詢之前執行。
我嘗試按以下方式將用戶名連接到 app_name。
self.session.bind.url.query.update({'application_name': 'TEST_USERNAME'})
self.engine.url.query.update({'application_name': 'TEST_USERNAME'})
但這并沒有反映或更新日志中的應用程式名稱。
而且我還嘗試在查詢中添加一些元資料,但它也沒有反映在日志中。
對于sql函式,我認為這是不必要的開銷。
我很想知道是否有人處理這個用例,或者是否有人可以指導我找到解決方案。
uj5u.com熱心網友回復:
你當然可以使用application_name它。
您可以在連接字串中設定該引數,也可以通過運行隨時更改該引數
SET application_name = 'whatever';
或者
SELECT set_config('application_name', 'whatever', FALSE);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361293.html
標籤:Python PostgreSQL的 烧瓶 sqlalchemy
上一篇:我在哪里可以在Swagger.json中為我的SwaggerUI檔案將validatorURL標志設定為NULL?
下一篇:在燒瓶函式中提前回傳后,我什么時候可以呼叫multiprocess.close()或process.join()?
