如何为 postgres 连接设置 application_name?
How to set application_name for postgres connections?
我正在使用 tomcat 连接池 org.apache.tomcat.jdbc.pool.DataSource
。连接出现在我的数据库 pg_stat_activity
中 application_name
。
如何在我的 java 应用程序中设置该应用程序名称,以便我知道每个连接的来源(因为会有多个应用程序访问同一个数据库)?
使用设置命令:
set application_name to my_application;
您可以将此添加到您在连接池定义中使用的 JDBC URL:
jdbc:postgresql://localhost/postgres?ApplicationName=my_app
如果您想动态更改它,例如要在您的应用程序中 反映不同的模块,您可以使用 SET
命令,如 klin 所示。
您可以在连接字符串中指定应用程序名称。
文档 here。
示例:
jdbc:postgresql://localhost:5435/DBNAME?ApplicationName=MyApp
注意:参数名称区分大小写。
如果您想以编程方式设置,PostgreSQL 驱动程序也有一个您可以调用的方法:
PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setApplicationName(applicationName);
如果您使用的是 Python 库 psycopg2
,请按以下步骤操作
import psycopg2
psycopg2.connect(host=host_ip, database=db_name, user=user, password=db_pwd, application_name="Python Local Test Script")
对于使用普通连接字符串而非 jdbc 的用户:
postgresql://other@localhost/otherdb?application_name=myapp
我正在使用 tomcat 连接池 org.apache.tomcat.jdbc.pool.DataSource
。连接出现在我的数据库 pg_stat_activity
中 application_name
。
如何在我的 java 应用程序中设置该应用程序名称,以便我知道每个连接的来源(因为会有多个应用程序访问同一个数据库)?
使用设置命令:
set application_name to my_application;
您可以将此添加到您在连接池定义中使用的 JDBC URL:
jdbc:postgresql://localhost/postgres?ApplicationName=my_app
如果您想动态更改它,例如要在您的应用程序中 反映不同的模块,您可以使用 SET
命令,如 klin 所示。
您可以在连接字符串中指定应用程序名称。
文档 here。
示例:
jdbc:postgresql://localhost:5435/DBNAME?ApplicationName=MyApp
注意:参数名称区分大小写。
如果您想以编程方式设置,PostgreSQL 驱动程序也有一个您可以调用的方法:
PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setApplicationName(applicationName);
如果您使用的是 Python 库 psycopg2
,请按以下步骤操作
import psycopg2
psycopg2.connect(host=host_ip, database=db_name, user=user, password=db_pwd, application_name="Python Local Test Script")
对于使用普通连接字符串而非 jdbc 的用户:
postgresql://other@localhost/otherdb?application_name=myapp