PostgreSQL - Python 接口:初学者指南
你好,未来的数据库大师们!我很高兴能成为你们在这激动人心的 PostgreSQL 和 Python 世界中的向导。作为一个教计算机科学多年的老师,我可以告诉你,这种组合就像花生酱和果酱一样——简单美味!那么,让我们卷起袖子,开始吧!
安装
在我们开始制造魔法之前,我们需要设置我们的工具。把这想象成在烹饪美味大餐前准备你的厨房。
-
首先,确保你的计算机上安装了 PostgreSQL。你可以从 PostgreSQL 官方网站下载。
-
接下来,我们需要安装一个 Python 模块,以便我们能够与 PostgreSQL 通信。打开你的终端或命令提示符,并输入:
pip install psycopg2
这个命令就像告诉你的计算机将其工具箱中添加一个新工具。一旦完成,你就准备好了!
Python psycopg2 模块 API
现在我们有了工具,让我们快速了解一下它们能做什么。psycopg2 模块为我们提供了一套与 PostgreSQL 交互的函数。以下是常见的一些函数:
函数 | 描述 |
---|---|
connect() | 建立与数据库的连接 |
cursor() | 创建一个游标对象来执行 SQL 命令 |
execute() | 执行一个数据库操作(查询或命令) |
fetchone() | 获取查询结果集的下一行 |
fetchall() | 获取查询结果的所有(剩余)行 |
commit() | 提交当前事务 |
rollback() | 回滚到任何挂起事务的开始 |
close() | 关闭数据库连接 |
如果这些看起来像是一种外语,不要担心。我们在接下来的内容中会详细探索每一个!
连接到数据库
让我们从连接到我们的数据库开始。这就好比敲敲门,请求进入。
import psycopg2
try:
connection = psycopg2.connect(
database="mydb",
user="myuser",
password="mypassword",
host="localhost",
port="5432"
)
print("连接成功!")
except (Exception, psycopg2.Error) as error:
print("连接到 PostgreSQL 时出错", error)
在这段代码中,我们:
- 导入了 psycopg2 模块
- 使用
connect()
函数建立连接 - 提供了数据库名称、用户、密码等必要信息
- 使用 try-except 块来处理任何可能的错误
如果一切顺利,你应该会看到 "连接成功!" 被打印出来。恭喜你,你已经打开了通往数据库的大门!
创建一个表
既然我们进来了,让我们创建一个表来存储一些数据。想象你正在设置一个书架来组织你的书籍。
try:
cursor = connection.cursor()
create_table_query = '''CREATE TABLE books
(ID INT PRIMARY KEY NOT NULL,
TITLE TEXT NOT NULL,
AUTHOR TEXT NOT NULL,
PUBLISHED_DATE DATE);'''
cursor.execute(create_table_query)
connection.commit()
print("表创建成功!")
except (Exception, psycopg2.Error) as error:
print("创建表时出错", error)
finally:
if connection:
cursor.close()
connection.close()
print("PostgreSQL 连接已关闭")
这里发生的事情是:
- 我们创建了一个游标对象,就像我们的数据库助手
- 我们定义了我们的 SQL 查询来创建一个名为 'books' 的表
- 我们使用
execute()
来运行查询 - 我们
commit()
我们的变化,使它们永久化 - 最后,我们关闭我们的游标和连接,做一个好的数据库公民
插入操作
是时候在我们的书架上添加一些书籍了!让我们向我们的表中插入一条记录。
try:
cursor = connection.cursor()
insert_query = """ INSERT INTO books (ID, TITLE, AUTHOR, PUBLISHED_DATE)
VALUES (%s, %s, %s, %s)"""
record_to_insert = (1, "杀死一只知更鸟", "哈珀·李", "1960-07-11")
cursor.execute(insert_query, record_to_insert)
connection.commit()
print("记录插入成功")
except (Exception, psycopg2.Error) as error:
print("插入数据时出错", error)
在这段代码中:
- 我们创建了一个 INSERT 查询,带有占位符(%s)用于我们的值
- 我们定义了一个元组,包含我们想要插入的值
- 我们执行查询,传递我们的值元组
- 我们提交更改
选择操作
现在,让我们检查我们的书架,看看我们有什么!
try:
cursor = connection.cursor()
select_query = "SELECT * from books"
cursor.execute(select_query)
records = cursor.fetchall()
for row in records:
print("ID:", row[0])
print("标题:", row[1])
print("作者:", row[2])
print("出版日期:", row[3], "\n")
except (Exception, psycopg2.Error) as error:
print("获取数据时出错", error)
这里发生的事情是:
- 我们创建了一个 SELECT 查询,用于从我们的 'books' 表中获取所有记录
- 我们执行了查询
- 我们使用
fetchall()
获取所有结果 - 我们遍历结果并打印每本书的详细信息
更新操作
哎呀!我们犯了一个错误。让我们更新一条记录来修正它。
try:
cursor = connection.cursor()
update_query = """Update books set AUTHOR = %s where ID = %s"""
cursor.execute(update_query, ("Nelle Harper Lee", 1))
connection.commit()
print("记录更新成功")
except (Exception, psycopg2.Error) as error:
print("更新数据时出错", error)
在这段代码中:
- 我们创建了一个 UPDATE 查询,带有占位符用于新的作者名和 ID
- 我们执行了查询,并传入新值
- 我们提交了更改
删除操作
最后,让我们学习如何从我们的书架上移除一本书。
try:
cursor = connection.cursor()
delete_query = """Delete from books where ID = %s"""
cursor.execute(delete_query, (1,))
connection.commit()
print("记录删除成功")
except (Exception, psycopg2.Error) as error:
print("删除数据时出错", error)
finally:
if connection:
cursor.close()
connection.close()
print("PostgreSQL 连接已关闭")
这里发生的事情是:
- 我们创建了一个 DELETE 查询,带有占位符用于 ID
- 我们执行了查询,并传入我们想要删除的记录的 ID
- 我们提交了更改
- 最后,我们关闭我们的游标和连接
就这样!你已经学会了使用 Python 操作 PostgreSQL 的基础知识。记住,熟能生巧,所以不要害怕尝试和尝试不同的事情。快乐编码,愿你的数据库总是井井有条!
Credits: Image by storyset