目录
(1)首先,我们需要安装 psycopg 驱动。通过 pip 安装最新的 psycopg
pip install psycopg2 -i https://pypi.tuna.tsinghua.edu.cn/simple

(2) 创建一个数据库连接的配置文件 dbconfig.ini,添加以下内容:
- [postgresql]
- host = [ip地址]
- port = 5432
- database = xxx
- user = xxx
- password = xxx
配置文件中存储了数据库的连接信息:主机、端口、数据库、用户以及密码;我们需要按照自己的环境进行配置。
(3)然后,新建一个测试数据库连接的 Python 文件 postgresql_connection.py,
文件目录结构为:

postgresql_connection.py的完整代码为:
- # 导入 psycopg2 模块和 Error 对象
- import psycopg2
- from psycopg2 import DatabaseError
- from configparser import ConfigParser
-
- def read_db_config(filename='dbconfig.ini', section='postgresql'):
- """ 读取数据库配置文件,返回一个字典对象"""
- # 创建解析器,读取配置文件
- parser = ConfigParser()
- parser.read(filename)
-
- # 获取 postgresql 部分的配置
- db = {}
- if parser.has_section(section):
- items = parser.items(section)
- for item in items:
- db[item[0]] = item[1]
- else:
- raise Exception('文件 {1} 中未找到 {0} 配置信息!'.format(section, filename))
- return db
-
-
- if __name__ == '__main__':
- db_config = read_db_config()
- connection = None
-
- try:
- # 使用 psycopg2.connect 方法连接 PostgreSQL 数据库
- connection = psycopg2.connect(**db_config)
- cur = connection.cursor() # 创建一个游标
- cur.execute('SELECT version()') # 获取 PostgreSQL 版本号
- db_version = cur.fetchone()
- print("连接成功,PostgreSQL 服务器版本:", db_version) # 输出 PostgreSQL 版本
-
- # `在这里插入代码片`
-
- cur.close() # 关闭游标
- except (Exception, DatabaseError) as e:
- print("连接 PostgreSQL 失败:", e)
- finally:
- if connection is not None: # 释放数据库连接
- connection.close()
- print("PostgreSQL 数据库连接已关闭。")
(4)运行程序,
执行以上脚本,返回的信息如下:
- 连接成功,PostgreSQL 服务器版本: ('PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit',)
- PostgreSQL 数据库连接已关闭。

游标对象提供了三种获取返回结果的方法:fetchone() 获取下一行数据,fetchmany(size=cursor.arraysize) 获取下一组数据行,fetchall() 返回全部数据行。
(1)我们创建一个新的文件 postgresql_query.py:
- # 导入 psycopg2 模块和 Error 对象
- import psycopg2
- from psycopg2 import DatabaseError
- from configparser import ConfigParser
-
- def read_db_config(filename='dbconfig.ini', section='postgresql'):
- """ 读取数据库配置文件,返回一个字典对象
- """
- # 创建解析器,读取配置文件
- parser = ConfigParser()
- parser.read(filename)
-
- # 获取 postgresql 部分的配置
- db = {}
- if parser.has_section(section):
- items = parser.items(section)
- for item in items:
- db[item[0]] = item[1]
- else:
- raise Exception('文件 {1} 中未找到 {0} 配置信息!'.format(section, filename))
-
- return db
-
-
- if __name__ == '__main__':
- db_config = read_db_config()
- connection = None
-
- try:
- connection = psycopg2.connect(**db_config) # 使用 psycopg2.connect 方法连接 PostgreSQL 数据库
- cur = connection.cursor() # 创建一个游标
-
- # 定义 SQL 语句
- sql = """ select id, name, age from users"""
- cur.execute(sql) # 执行 SQL 命令
- print("用户数量:", cur.rowcount)
-
- # 获取结果
- user = cur.fetchone()
- while user is not None:
- print(user)
- user = cur.fetchone()
-
- cur.close() # 关闭游标
- except (Exception, DatabaseError) as e:
- print("操作失败:", e)
- finally:
- if connection is not None: # 释放数据库连接
- connection.close()
(2)游标对象的 rowcount 属性代表了返回的数据行数,fetchone() 方法返回一行数据或者 None,while 循环用于遍历和打印查询结果。由于 users 表中目前只有一行数据,执行以上文件的结果如下:
- 用户数量: 2
- (1, 'lane', False)
- (2, 'lane_dynamic', False)
