Python

收藏648

阅读10348

更新时间2025-08-21

安装

PostgreSQL 可以使用 psycopg2 模块与 Python 集成。 sycopg2 是 Python 编程语言的 PostgreSQL 数据库适配器。 psycopg2 的目标是非常小、快、稳定。 您不需要单独安装此模块,因为默认情况下,它与 Python 2.5.x 及更高版本一起提供。

如果您的机器上没有安装它,那么您可以使用 yum 命令安装它,如下所示 −

$yum install python-psycopg2

要使用 psycopg2 模块,您必须首先创建一个代表数据库的 Connection 对象,然后您可以选择创建游标对象,这将帮助您执行所有 SQL 语句。


Python psycopg2 模块 API

以下是重要的 psycopg2 模块例程,可以满足您在 Python 程序中使用 PostgreSQL 数据库的要求。 如果您正在寻找更复杂的应用程序,那么您可以查看 Python psycopg2 模块的官方文档。

S. No. API & Description
1

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

此 API 打开与 PostgreSQL 数据库的连接。 如果数据库打开成功,它会返回一个连接对象。

2

connection.cursor()

此例程创建一个 游标,它将在您使用 Python 进行数据库编程的整个过程中使用。

3

cursor.execute(sql [, optional parameters])

该例程执行一条 SQL 语句。 SQL 语句可以参数化(即,占位符而不是 SQL 文字)。 psycopg2 模块支持使用 %s 符号的占位符

例如:cursor.execute("insert into people values (%s, %s)", (who, age))

4

cursor.executemany(sql, seq_of_parameters)

此例程针对在序列 sql 中找到的所有参数序列或映射执行 SQL 命令。

5

cursor.callproc(procname[, parameters])

此例程执行具有给定名称的存储数据库过程。 对于过程期望的每个参数,参数序列必须包含一个条目。

6

cursor.rowcount

此只读属性返回最后一次执行 *() 修改、插入或删除的数据库行总数。

7

connection.commit()

此方法提交当前事务。 如果您不调用此方法,那么自上次调用 commit() 以来您所做的任何事情都不会从其他数据库连接中看到。

8

connection.rollback()

此方法回滚自上次调用 commit() 以来对数据库的任何更改。

9

connection.close()

此方法关闭数据库连接。 请注意,这不会自动调用 commit()。 如果您只是关闭数据库连接而不先调用 commit(),您的更改将会丢失!

10

cursor.fetchone()

此方法获取查询结果集的下一行,返回单个序列,或者当没有更多数据可用时返回 None。

11

cursor.fetchmany([size=cursor.arraysize])

该例程获取查询结果的下一组行,并返回一个列表。 当没有更多行可用时,将返回一个空列表。 该方法尝试获取 size 参数所指示的行数。

12

cursor.fetchall()

此例程获取查询结果的所有(剩余)行,并返回一个列表。 当没有行可用时返回一个空列表。


连接数据库

以下 Python 代码显示了如何连接到现有数据库。 如果数据库不存在,则创建它,最后返回一个数据库对象。

#!/usr/bin/python

import psycopg2

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

print "Opened database successfully"

在这里,您还可以提供数据库 testdb 作为名称,如果数据库成功打开,则会给出以下消息 −

Open database successfully

创建表

以下 Python 程序将用于在先前创建的数据库中创建表 −

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);''')
print "Table created successfully"

conn.commit()
conn.close()

执行上述程序时,它将在您的 test.db 中创建 COMPANY 表,并显示以下消息 −

Opened database successfully
Table created successfully

插入操作

以下 Python 程序显示了我们如何在上面示例中创建的 COMPANY 表中创建记录 −

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

执行上述给定程序时,它将在 COMPANY 表中创建给定记录,并显示以下两行 −

Opened database successfully
Records created successfully

SELECT 操作

以下 Python 程序展示了我们如何从上面示例中创建的 COMPANY 表中获取和显示记录 −

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

执行上述给定程序时,将产生以下结果 −

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

更新操作

以下 Python 代码展示了我们如何使用 UPDATE 语句更新任何记录,然后从我们的 COMPANY 表中获取并显示更新的记录 −

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

执行上述给定程序时,将产生以下结果 −

Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

删除操作

以下 Python 代码显示了我们如何使用 DELETE 语句删除任何记录,然后从我们的 COMPANY 表中获取并显示剩余记录 −

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

执行上述给定程序时,将产生以下结果 −

Opened database successfully
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

相关

视频

RELATED VIDEOS

更多

免费

phpStudy极速入门视频教程

免费

Midjourney基础课程
初级 Midjourney基础课程

11149次学习

收藏

免费

极客学院Git使用视频教程

免费

尚观shell视频教程
高级 尚观shell视频教程

15709次学习

收藏

免费

尚观Linux入门视频教程
初级 尚观Linux入门视频教程

42887次学习

收藏

免费

尚观Linux初级视频教程
初级 尚观Linux初级视频教程

40264次学习

收藏

免费

尚观Linux中级视频教程
中级 尚观Linux中级视频教程

48298次学习

收藏

免费

尚观Linux高级视频教程
高级 尚观Linux高级视频教程

41982次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号