• sqlalchemy从入门到熟悉(一)


    sqlalchemy从入门到熟悉(一)

    简介

    SQLAlchemy SQL工具包和对象关系映射器是一套用于处理数据库和Python的综合工具。它有几个不同的功能领域,可以单独使用或组合使用。SQLAlchemy的两个最重要的面向前端的部分是对象关系映射器(ORM)以及Core。核心包含SQLAlchemy 的SQL以及数据库集成和描述服务的广度,其中最突出的部分是SQL表达式语言。

    1. SQL表达式语言是一个完全独立于ORM包的工具包,它提供了一个构造由可组合对象表示的SQL表达式的系统,然后可以针对特定事务范围内的目标数据库“执行”这些SQL表达式,并返回结果集。插入、更新和删除是通过传递表示这些语句的SQL表达式对象以及表示要与每个语句一起使用的参数的字典来实现的。

    2. ORM构建在Core之上,以提供使用映射到数据库模式的域对象模型的方法。在使用ORM时,SQL语句的构造方式与使用Core时基本相同,但是DML的任务是使用工作单元,它将针对可变对象的状态更改转换为INSERT、UPDATE和DELETE构造,然后根据这些对象调用这些构造。特定于ORM的自动化和以对象为中心的查询功能也增强了SELECT语句。

    3. 使用Core和SQL表达式语言提供了一个以模式为中心的数据库视图,以及一个面向不变性的编程范例,而ORM则在此基础上构建了一个以域为中心的数据库视图,具有更明显的面向对象和依赖于可变性的编程范例。由于关系数据库本身是可变服务,不同之处在于Core/SQL表达式语言是面向命令的,而ORM是面向状态的。

    4. 支持的安装方法

    (1)使用PIP安装

    pip install SQLAlchemy
    # 安装最新的预缓解版本,使用--pre
    pip install --pre SQLAlchemy
    
    • 1
    • 2
    • 3

    (2)SQLAlchemy安装是通过标准Python方法进行的,这些方法基于setuptools,可以通过引用setup.py直接使用。

    python setup.py install
    
    • 1

    (3)检查已安装的SQLAlchemy版本

    >>> import sqlalchemy
    >>> sqlalchemy.__version__
    '1.4.41'
    
    • 1
    • 2
    • 3

    建立连接

    1. 任何SQLAlchemy应用程序的开始都是一个名为Engine。此对象充当连接到特定数据库的中心源,提供工厂和连接池。引擎通常是一个职位特定数据库服务器创建一次的全局对象,并使用一个URL字符串进行配置。
    from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://root:root@localhost:3306/test')
    
    • 1
    • 2

    处理事务和DBAPI

    1. 获取连接
    from sqlalchemy import create_engine, text
    engine = create_engine('mysql+pymysql://root:root@localhost:3306/test')
    
    # with语句是python的上下文管理器
    with engine.connect() as conn:
        result = conn.execute(text("select 'hello world'"))
        print(result.all())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果:

    [(‘hello world’,)]

    1. 提交更改
    #DBAPI是非自动提交的,可以使用`commit()`方法提交
    with engine.connect() as conn:
        conn.execute(text("create table demo(x int, y int)"))
        conn.execute(text("insert into demo(x, y) values(:x, :y)"), 
           [{
       "x": 1, "y": 1}, {
       "x": 2, "y": 4}])
        conn.commit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 获取返回结果
    with engine.connect() as conn:
        # REsul有很多用于获取和转换行的方法,类似于python的命名元组
        result = conn.execute(text
    • 1
    • 2
  • 相关阅读:
    slam 点云退化
    echarts 实现tooltip提示框样式自定义
    Cadence Allegro 过孔通孔盲孔埋孔详细说明及设计举例图文教程
    c# HashSet vs SortedSet
    计算机毕业设计源码——基于Android的真人社交游戏辅助应用开发
    伪随机数认识 以及 公平的抽奖
    Webpack5入门到原理
    [CISCN2019 华北赛区 Day2 Web1]Hack World 布尔注入
    微服务入门:http客户端Feign
    关于iOS:如何使用SwiftUI调整图片大小?
  • 原文地址:https://blog.csdn.net/dolly_baby/article/details/130911460