How to specify Schema in psycopg2 connection method?

十年热恋 提交于 2021-01-01 07:29:20

问题


Using the psycopg2 module to connect to the PostgreSQL database using python. I'm able to execute all of my queries using the below connection method. Now I want to specify a different schema other than the public to execute my SQL statements. Is there any way to specify the schema name in the connection method?

conn = psycopg2.connect(host="localhost",
                            port="5432",
                            user="postgres",
                            password="password",
                            database="database",
                            )

I tried to specify schema directly inside the method. schema="schema2" But I am getting the following programming error.

ProgrammingError: invalid dsn: invalid connection option "schema"

回答1:


When we were working on ThreadConnectionPool which is in psycopg2 and creating connection pool, this is how we did it.

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"
)

You see that options key there in params. That's how we did it.

When you execute a query using the cursor from that connection, it will search across those schemas mentioned in options i.e., dbo,public in sequence from left to right.

You may try something like this:

psycopg2.connect(host="localhost", 
                 port="5432", 
                 user="postgres", 
                 password="password", 
                 database="database", 
                 options="-c search_path=dbo,public")

Hope this might help you.




回答2:


If you are using the string form you need to URL escape the options argument:

postgresql://localhost/airflow?options=-csearch_path%3Ddbo,public

(%3D = URL encoding of =)

This helps if you are using SQLAlchemy for example.



来源:https://stackoverflow.com/questions/59298580/how-to-specify-schema-in-psycopg2-connection-method

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!