SqlAlchemy使用教程(一) 原理与环境搭建

这篇具有很好参考价值的文章主要介绍了SqlAlchemy使用教程(一) 原理与环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SqlAlchemy使用教程(一) 原理与环境搭建,数据库,python,flask,fastapi

  • SqlAlchemy使用教程(一) 原理与环境搭建
  • SqlAlchemy使用教程(二) 入门示例及编程步骤
  • SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解
  • SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用
  • SqlAlchemy使用教程(五) ORM API 编程入门
  • SqlAlchemy使用教程(六) – ORM 表间关系的定义与CRUD操作

一、SqlAlchemy 原理及环境搭建

SqlAlchemy是1个支持连接各种不同数据库的Python库,提供Core APIORM(object relation mapper)两种方式使用数据库。

Core API方式,即使用SQL封装方式访问数据库
ORM, 对象关系模型,是用 Python 类对象映射 Database表的一种方式。

官方文档:
https://docs.sqlalchemy.org/en/20/intro.html

1、SqlAlchemy 的架构与主要功能

1.1 架构图

SQLAlchemy 是由Core 与 ORM层组成, 在Core层,提供了Engine对象、MetaData与数据库API交互,而SQL Expression Language 是对 Sql 语句的封装,用以消除各数据API之间的差异,实现1套接口适用于所有数据库。
ORM 是在Core之上的抽象层,其更符合Python面向对象编程的思路,
SqlAlchemy使用教程(一) 原理与环境搭建,数据库,python,flask,fastapi

1.2主要功能点

  • 在Core层,可以使得DB API 直接操作数据库,也可以使用SQL Expression Language. 这是SqlAlchemy 提供的SQL表达式封装器。该接口层使用接近于原生SQL,可以令熟悉DB API(如sqlite3, mysql-connector等)的程序员快速上手。
  • ORM 方式访问数据库,用 python 类与对象的方式操作数据库。
  • 最大优点是:支持跨数据库。也就是说1套代码,不同的数据库都可以使用,如MySql, PostgreSql, MongDB等均可以,这使得项目进行数据库迁移非常容易。

很多知名公司、知名软件,如Flask 均使用 SqlAlchemy 做为数据库接口开发库, 掌握了SqlAlchemy以后,学习Django的ORM也非常轻松,原理与操作过程都非常接近,包括Node.js 的Sequelize的ORM库,也是类似的。

1.3 什么是ORM?

Object Relation Mapping (ORM)是用Python 对象映射到Database表的一种方法。SqlAlchemy 的ORM有点类似于Hibernate。

数据库的二维表数据,可以用Python list类型表示,使用 [dict, …] 形式,如下

[
    {'id': '1', 'name': 'Michael'},
    {'id': '2', 'name': 'Bob'},
    {'id': '3', 'name': 'Adam'}
]

即数据库中的每行数据用1个字典类型表示,字典的key即字段名。使用 mysql-connector, sqlite3返回的数据结构就是像上面这样表示的。
如果将字典的key看作类的属性,那么列表中的每个字典元素可以理解为是1个类的实例,也就是1个object。因此,在ORM中,先定义1个class,每个属性表示1个 database table的1个字段。

class User(object):
    def __init__(self, id, name):
        self.id = id
        self.name = name

数据库的每行数据就是该类的1个实例,这样1个table就可以用class + object list 来表示,这就是ORM (Object-Relational Mapping)的原理。
SqlAlchemy使用教程(一) 原理与环境搭建,数据库,python,flask,fastapi

1.4 常用概念与术语

SqlAlchemy 使用了很多专用术语与名词,理解这些常用术语,不仅对于阅读官方文档,而且对于理解代码,也非常有帮助。

  • 对象(object), 实例(instance)
    对象与实例均为面对对象编程的概念,举例说明,对于Person类, jack=Persion(name="Jack", age=25),则 jack 称为Person类的1个实例,也是1个对象。 在本文中,对象与实例的含义是相同的。
  • Metadata
    Metadata 通常是指“data that describes data”,通常翻译为元数据。在SQLAlchemy中,“Metadata”定义了数据库、表、字段、约束和其他DDL对象结构,并将这些信息以python 的方式保存。可以理解为数据引擎对象的基础结构数据,与数据库中schema 的概念非常类似。
  • Insert Sentinel ,原义为“插入操作守卫哨兵”
    这是一个SQLAlchemy特定的术语,指的是操作语句会返回一个结果列表,该列表可用于检查插入多行数据时,每行数据是否插入成功。
  • Session
    Session,可以理解为ORM数据库操作的容器。Seesion从数据库加载实例,跟踪对Model实例的更改。 session 还有1个优点,可以传递给线程对象。
  • scalar subquery
    指嵌套SELECT语句中的SELECT子句。
SELECT id, (SELECT name FROM address WHERE address.user_id=user.id)
FROM user
  • DB reflection
    从当前已存在数据库的Table中获取数据库结构,并将其转换为sqlalchemy 的metadata数据。
  • DDL, DML, DQL
    在SqlAlchemy 文档中,会经常看到这3个术语,这是SQL规范中的术语,其含义如下:
    DDL – Data Definition Language,用于定义数据库、表结构的语法, 如CREATE TABLE, DROP TABLE 等
    DQL – Data Query Language,数据查询语言, 主要是 SELECT语句
    DML – Data Manipulation Language, 数据操作语言,如INSERT INTO, UPDATE,DELETE等

2. 环境搭建

1)安装
安装 sqlalchemy 库

pip install sqlalchemy

安装数据库驱动库,如安装mysql接口库:mysql-connector ,

pip3 install mysql-connector

Python3已内置 sqlite3 库,可以直接使用

2)验证安装是否成功

打开终端窗口,输出python,进入命令行模式,查看是否能成功显示版本号。文章来源地址https://www.toymoban.com/news/detail-792542.html

>>> import sqlalchemy
>>> print(sqlalchemy.__version__)
2.0.23

到了这里,关于SqlAlchemy使用教程(一) 原理与环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python:使用Flask-SQLAlchemy对数据库增删改查的简单示例

    以下将介绍Flask-SQLAlchemy对数据库增删改查的简单示例。 一、安装所需的库 pip install flask flask-sqlalchemy flask-mysql 二、创建数据表 本示例使用mysql创建数据库和表 CREATE TABLE `user` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` varchar(255) DEFAULT NULL,   `age` int(11) DEFAULT NULL,   PRIMARY KEY (`id

    2024年02月07日
    浏览(65)
  • python Flask项目使用SQLalchemy连接数据库时,出现RuntimeError:Working outside of application context.的解决过程记录

    在使用python的Flask框架跟着教程编写项目时,我跟着教程使用了三个文件来组织,分别是main.py(主程序),module.py(数据库模型),controller.py(蓝图模块程序,用Blueprint衔接) 在主程序中,创建app、SQLalchemy实例对象db并将二者绑定 在module.py中,导入主程序中的db和app,创建

    2024年02月09日
    浏览(45)
  • Flask-数据库-SQLAlchemy

    SQLAlchemy是flask的扩展,是一个功能强大的OR映射器,支持多种数据库后台,可以将类的对象映射至数据库表。 使用这个工具,可以创建数据库,创建表,并为数据库添加数据,进行查询操作等。 参考:Flask SQLAlchemy - Flask 教程 | BootWiki.com  app=Flask(__name__)  #创建Flask实例  app

    2023年04月09日
    浏览(39)
  • Flask数据库之SQLAlchemy--介绍--链接数据库

    目录 SQLAlchemy介绍 SQLAlchemy连接数据库  数据库是一个网站的基础!!! 比如MySQL、MongoDB、SQLite、PostgreSQL等,这里我们以MySQL为例进行讲解。 SQLAlchemy是一个ORM框架 对象关系映射 (英语: Object Relational Mapping ,简称 ORM ,或 O/RM ,或 O/R mapping ),是一种程序设计技术,用于实

    2024年02月07日
    浏览(57)
  • Python与SQLAlchemy:轻松管理数据库

    在这篇文章中,我们将学习如何使用Python和SQLAlchemy库来轻松管理数据库。SQLAlchemy是一个强大的ORM(对象关系映射)库,它允许您通过Python代码与关系型数据库进行交互,而无需编写SQL语句。 一、安装SQLAlchemy 首先,确保您已经安装了Python。然后,使用以下命令安装SQLAlchemy库

    2024年02月19日
    浏览(53)
  • flask-sqlalchemy连接数据库

    1、安装flask_sqlalchemy和pymysql包 2、进行配置 使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。 其中HOSTNAME为路由地址 PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号 DATABASE为数据库名字

    2024年02月06日
    浏览(60)
  • Flask-sqlalchemy更新数据库

    Flask开发过程中,难免不会在开发工程中修改数据库信息,如添加字段,修改字段类型等,Flask可以通过扩展库flask-migrate来更新DEBUG中的工程数据库,更新数据库步骤如下: 1、首先需要安装flask_migrate,pip install flask_migrate 2、因为flask_sqlalchemy是通过终端命令更新,所以需要f

    2023年04月08日
    浏览(38)
  • 使用python3的sqlalchemy+sqlcipher3对sqlite3数据加密,使用pysqlcipher3编译打建环境,并写项目测试

    一、背景 最近有个想法,想写一个软件,前期本来想用java的springboot加vue来实现,数据库选sqlite来存储,但在用spingboot框架搭好之后,感觉这款软件更适合用python来写,java不适windows桌面系统,最终选择了pthon使用tkinter gui来实现。sqlite数据库方便是方便,但开源版本不能设置

    2024年02月12日
    浏览(47)
  • Flask数据库操作-Flask-SQLAlchemy

    Flask中一般使用flask-sqlalchemy来操作数据库。flask-sqlalchemy的使用介绍如下: 一、SQLAlchemy SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。 SQLAlchemy是一个关

    2024年02月22日
    浏览(54)
  • SQLAlchemy ORM指南:简化数据库操作的最佳实践

    背景: ​ SQLAlchemy是一个数据库的ORM框架,让我们操作数据库的时候不要再用SQL语句了,跟直接操作模型一样。操作十分便捷,其实SQLAlchemy应该是在Flask和Django应用的特别多,而且在flask中已经集成了flask_sqlalchemy ,好像是 SQLAlchemy的作者和 Flask是同一个,背景了解到这里就可

    2024年01月20日
    浏览(90)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包