[Python][PostgreSQL]获取存在的数据库名称、强制断开Postgres数据库连接、删除数据库
import psycopg2
# 假设数据库连接信息如下
dbname = 'your_dbname'
user = 'your_username'
password = 'your_password'
host = 'localhost'
port = '5432'
# 获取存在的数据库名称
def get_existing_db_names():
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
dbname='postgres',
user=user,
password=password,
host=host,
port=port
)
cursor = conn.cursor()
# 执行SQL查询
cursor.execute("SELECT datname FROM pg_database;")
rows = cursor.fetchall()
# 关闭连接
cursor.close()
conn.close()
# 返回数据库名称列表
return [row[0] for row in rows]
# 强制断开PostgreSQL数据库连接
def force_disconnect_all_connections(dbname):
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
dbname='postgres',
user=user,
password=password,
host=host,
port=port
)
cursor = conn.cursor()
# 执行SQL命令来断开所有连接
cursor.execute(f"SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '{dbname}';")
# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()
# 删除数据库
def drop_database(dbname):
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
dbname='postgres',
user=user,
password=password,
host=host,
port=port
)
cursor = conn.cursor()
# 执行SQL删除命令
cursor.execute(f"DROP DATABASE IF EXISTS {dbname};")
# 提交更改并关闭连接
conn.commit()
cursor.close()
conn.close()
# 示例使用
existing_dbs = get_existing_db_names()
print("存在的数据库:", existing_dbs)
force_disconnect_all_connections(dbname)
drop_database(dbname)
print(f"数据库 {dbname} 已删除。")
这段代码展示了如何使用Python和psycopg2库来连接PostgreSQL数据库,获取存在的数据库名称、强制断开特定数据库的所有连接,以及删除数据库。这些操作通常需要具有相应权限的用户来执行。
评论已关闭