Mus*_*afa 4 python postgresql psycopg2
使用 psycopg2 模块通过 python 连接到 PostgreSQL 数据库。我可以使用以下连接方法执行所有查询。现在我想指定一个不同的模式而不是 public 来执行我的 SQL 语句。有没有办法在连接方法中指定模式名称?
conn = psycopg2.connect(host="localhost",
port="5432",
user="postgres",
password="password",
database="database",
)
Run Code Online (Sandbox Code Playgroud)
我试图直接在方法内部指定架构。
schema="schema2"
但我收到以下编程错误。
ProgrammingError: invalid dsn: invalid connection option "schema"
Run Code Online (Sandbox Code Playgroud)
Suk*_*djf 10
当我们处理ThreadConnectionPoolwhich is inpsycopg2并创建连接池时,我们就是这样做的。
from psycopg2.pool import ThreadedConnectionPool
db_conn = ThreadedConnectionPool(
minconn=1, maxconn=5,
user="postgres", password="password", database="dbname", host="localhost", port=5432,
options="-c search_path=dbo,public"
)
Run Code Online (Sandbox Code Playgroud)
您可以options在 params 中看到该键。我们就是这样做的。
当您使用来自该连接的游标执行查询时,它将从左到右的顺序搜索optionsiedbo,public中提到的那些模式。
你可以尝试这样的事情:
psycopg2.connect(host="localhost",
port="5432",
user="postgres",
password="password",
database="database",
options="-c search_path=dbo,public")
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助你。
如果您使用的是字符串形式,则需要对options参数进行 URL 转义:
postgresql://localhost/airflow?options=-csearch_path%3Ddbo,public
Run Code Online (Sandbox Code Playgroud)
( %3D= URL 编码=)
例如,如果您使用 SQLAlchemy,这会有所帮助。
| 归档时间: |
|
| 查看次数: |
7175 次 |
| 最近记录: |