答案是:
http://initd.org/psycopg/docs/module.html#psycopg2.connect
客户端库/服务器支持的任何其他连接参数可以在连接字符串中传递,也可以作为关键字传递.PostgreSQL文档包含了supported parameters个选项的完整列表.还请注意,可以使用环境变量将相同的参数传递给客户机库.
我们需要的变量是:
http://www.postgresql.org/docs/current/static/runtime-config-logging.html#GUC-APPLICATION-NAME
应用程序名称可以是少于NAMEDATALEN个字符(标准版本中为64个字符)的任何字符串.应用程序与服务器的连接通常由应用程序设置.该名称将显示在pg_stat_活动视图中,并包含在CSV日志(log)条目中.它还可以通过log_line_prefix参数包含在常规日志(log)条目中.应用程序名称值中只能使用可打印的ASCII字符.其他字符将替换为问号(?).
结合:
http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#custom-dbapi-args
基于字符串的参数可以直接从URL字符串作为查询参数传递:(示例…)create_engine()还接受一个参数connect_args,它是一个额外的字典,将被传递给connect().当需要字符串以外的类型的参数,并且SQLAlchemy的数据库连接器没有该参数的类型转换逻辑时,可以使用此选项
由此我们得到:
e = create_engine("postgresql://scott:tiger@localhost/test?application_name=myapp")
或者:
e = create_engine("postgresql://scott:tiger@localhost/test",
connect_args={"application_name":"myapp"})