【问题标题】:change database (postgresql) in python using psycopg2 dynamically使用psycopg2动态更改python中的数据库(postgresql)
【发布时间】:2012-12-05 09:13:35
【问题描述】:

谁能告诉我如何动态更改我刚刚创建的数据库...使用以下代码... 我认为在执行此代码期间,我将在默认 postgres 数据库(即模板数据库)中,并且在创建新数据库后,我想在运行时更改我的数据库以进行进一步处理...

    from psycopg2 import connect
    from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT

    dbname = 'db_name'
    con = connect(user ='postgres', host = 'localhost', password = '*****')
    con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
    cur = con.cursor()
    cur.execute('CREATE DATABASE ' + dbname)
    cur.close()
    con.close()

【问题讨论】:

  • 如果不建立新连接就无法更改 PostgreSQL 中的数据库,所以 Michal 是完全正确的。

标签: python postgresql psycopg2


【解决方案1】:

您可以简单地使用database=dbname 参数再次连接。注意使用SELECT current_database() 来显示我们在哪个数据库上工作,使用SELECT * FROM pg_database 来显示可用数据库:

from psycopg2 import connect
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT

def show_query(title, qry):
    print('%s' % (title))
    cur.execute(qry)
    for row in cur.fetchall():
        print(row)
    print('')

dbname = 'db_name'
print('connecting to default database ...')
con = connect(user ='postgres', host = 'localhost', password = '*****', port=5492)
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cur = con.cursor()
show_query('current database', 'SELECT current_database()')
cur.execute('CREATE DATABASE ' + dbname)
show_query('available databases', 'SELECT * FROM pg_database')
cur.close()
con.close()

print('connecting to %s ...' % (dbname))
con = connect(user ='postgres', database=dbname, host = 'localhost', password = '*****', port=5492)
cur = con.cursor()
show_query('current database', 'SELECT current_database()')
cur.close()
con.close()

【讨论】:

    猜你喜欢
    • 2013-10-25
    • 2011-07-21
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2022-01-12
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多