SQLAlchemy基础教程

SQLAlchemy基础教程

在没有 Python DB-API 之前,各数据库之间的应用接口非常混乱,实现各不相同。如果项目需要更换数据库时,则需要做大量的修改,非常不便。Python DB-API 的出现就是为了解决这样的问题。

Python 所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API 是一个规范,它定义了一系列必须的对象和数据库存取方式,以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。由于 DB-API 为不同的数据库提供了一致的访问接口, 在不同的数据库之间移植代码成为一件轻松的事情。

cursor 教程

PEP 249 – Python Database API Specification v2.0

这里写图片描述

DB-API 操作数据库流程

这里写图片描述

Connection 对象

  • close(): Close the connection now.
  • commit(): Commit any pending transaction to the database.
  • rollback(): This method is optional since not all databases provide transaction support.
  • curosr(): Return a new Cursor Object using the connection.

Cursor 对象

  • 属性: description, rowcount
  • callproc()
  • close()
  • execute()
  • executemany()
  • fetchone()
  • fetchmany()
  • fetchall()
  • nextset()
  • arraysize
  • setinputsizes()
  • setoutputsize()

DB-API 操作 PostgreSQL

启动 PostgreSQL

为了演示,这里使用 Docker 启动 PostgreSQL。

首先编写 docker-compose file,其中设置登录密码为 ,映射主机端口到5432并挂载数据目录到主机。

使用 docker-compose 启动服务:


使用 查看服务已正常启动:


创建数据库 test

首先使用查询容器 id,我这里为 ebe4f81cc5fb。

进入容器:


使用 psql 以 postgres 用户登录 PostgreSQL:


创建数据库 test:


出现 CREATE DATABASE 说明以及创建成功,可使用查看所有数据库,进入数据库 test,查看当前数据库下所有表。显然,现在 test 下什么也没有。

使用 Python 交互 PostgreSQL

首先安装 psycopg2 用于连接:


对于支持事务的数据库,当游标建立之时,就自动开始了一个隐形的数据库事务。执行 INSERT/UPDATE 等操作后使用提交事务。

执行过程发生错误,可以捕获异常并使用回滚。

数据库表是一个二维表,包含多行多列。把一个表的内容用 Python 的数据结构表示出来的话,可以用一个 list 表示多行,list 的每一个元素是 tuple,表示一行记录,比如,包含 id 和 name 的 user 表:


Python 的 DB-API 返回的数据结构就是像上面这样表示的。但是用 tuple 表示一行很难看出表的结构。如果把一个 tuple 用 class 实例来表示,就可以更容易地看出表的结构来:


这就是 ORM (Object-Relational Mapping) 技术,把关系数据库的表结构映射到对象上。但是由谁来做这个转换呢?ORM 框架应运而生。

这里写图片描述

作为一个美妙的语言,Python 有很多 ORM 库:

  • SQLAlchemy
  • SQLObject
  • Storm
  • Django ORM
  • peewee
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:Ai探索者,转载请注明出处:https://javaforall.net/242926.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月15日 下午10:36
下一篇 2026年3月15日 下午10:36


相关推荐

关注全栈程序员社区公众号