如何使用psycopg3连接PostgreSQL数据库指定schema?
解决PostgreSQL连接时指定默认Schema的问题
有两种常用方法可以让你在psycopg连接后默认使用schema1,不用每次写表的schema前缀:
方法一:连接时通过options参数指定search_path
在建立连接时,添加options参数直接设置数据库的search_path为目标schema:
import psycopg2 conn = psycopg2.connect( dbname="DATABASE", user="your_user", password="your_password", host="your_host", port="your_port", options="-c search_path=schema1" )
连接成功后,所有未指定schema的查询都会默认指向schema1,直接执行SELECT * FROM some_table;即可。
方法二:连接后执行SQL设置search_path
如果不想在连接参数里配置,也可以在连接建立后立即执行SQL修改当前会话的search_path:
import psycopg2 conn = psycopg2.connect( dbname="DATABASE", user="your_user", password="your_password", host="your_host", port="your_port" ) cursor = conn.cursor() cursor.execute("SET search_path TO schema1;") conn.commit() # 后续查询无需添加schema前缀 cursor.execute("SELECT * FROM some_table;")
补充说明
PostgreSQL的search_path参数决定了表的查找顺序,设置为schema1后,未带schema的表名会优先在schema1中查找。如果需要同时包含多个schema,可写成options="-c search_path=schema1,public"(多个schema用逗号分隔)。
内容的提问来源于stack exchange,提问作者Sublimion
相关产品推荐
相关产品推荐

