肾模?你还不会sqlalchemy!【SQLite】

2023-11-10

Part1什么是 sqlalchemy?

sqlalchemyPython 的一个优秀的开源 ORM 框架。为开发者提供了方便快捷的 API,能够提高开发效率,让开发者专心于业务代码开发,而非浪费时间在数据库的维护上。今天我们就来一起了解下 sqlalchemy 的基本用法。

Part2什么是 SQLite?

SQLite 是一款超轻的关系型数据库,其实际就是一个 .db 文件,通常我们在测试环境中可以方便快捷的使用它,另部分企业也将其用在生产环境中。总之它是一款优秀的数据库。

Part3安装

1安装 sqlalchemy

pip install sqlalchemy

2安装 SQLitebrowser

下载地址:http://www.sqlitebrowser.org/dl/
下载页面

选择合适自己的下载即可。

SQLitebrowser界面

Part4例子

3创建数据库&表

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Boolean,Column,Integer,String


# 定义数据库路径(不存在会自动创建)
SQLiteURL = 'sqlite:///test.db'

# 创建engine,即数据库驱动信息
engine = create_engine(
    url=SQLiteURL,
    echo=True,    # 打开sqlalchemy ORM过程中的详细信息
    connect_args={
        'check_same_thread':False   # 是否多线程
    }
)

# 数据表的基类(定义表结构用)
Base = declarative_base()

# 定义User表结构

class User(Base):
    # User类对象对应表users
    __tablename__='users'
    my_id = Column(Integer,primary_key=True,index=True)
    name = Column(String(32),unique=True,index=True)
    passwd = Column(String(32),index=True)
    is_active = Column(Boolean,default=True)

# 创建表
# checkfirst=True 默认也是 True,即如果数据库存在则不再创建
Base.metadata.create_all(engine, checkfirst=True)

执行以上代码:

PS C:\Users\xx\Desktop\study\02> python .\orm.py
2021-07-12 17:23:06,010 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2021-07-12 17:23:06,010 INFO sqlalchemy.engine.Engine PRAGMA main.table_info("users")
2021-07-12 17:23:06,011 INFO sqlalchemy.engine.Engine [raw sql] ()
2021-07-12 17:23:06,011 INFO sqlalchemy.engine.Engine PRAGMA temp.table_info("users")
2021-07-12 17:23:06,011 INFO sqlalchemy.engine.Engine [raw sql] ()
2021-07-12 17:23:06,012 INFO sqlalchemy.engine.Engine
CREATE TABLE users (
        my_id INTEGER NOT NULL,
        name VARCHAR(32),
        passwd VARCHAR(32),
        is_active BOOLEAN,
        PRIMARY KEY (my_id)
)


2021-07-12 17:23:06,012 INFO sqlalchemy.engine.Engine [no key 0.00047s] ()
2021-07-12 17:23:06,026 INFO sqlalchemy.engine.Engine CREATE INDEX ix_users_my_id ON users (my_id)
2021-07-12 17:23:06,027 INFO sqlalchemy.engine.Engine [no key 0.00029s] ()
2021-07-12 17:23:06,030 INFO sqlalchemy.engine.Engine CREATE INDEX ix_users_passwd ON users (passwd)
2021-07-12 17:23:06,030 INFO sqlalchemy.engine.Engine [no key 0.00025s] ()
2021-07-12 17:23:06,033 INFO sqlalchemy.engine.Engine CREATE UNIQUE INDEX ix_users_name ON users (name)
2021-07-12 17:23:06,034 INFO sqlalchemy.engine.Engine [no key 0.00040s] ()
2021-07-12 17:23:06,037 INFO sqlalchemy.engine.Engine COMMIT
PS C:\Users\xx\Desktop\study\02>

代码所在路径下生成了 test.db

test.dbSQLitebrowser 中的视图:

数据库结构
浏览模式

4数据创建 Add

# 创建session类对象(建立和数据库的链接)
SessionLocal = sessionmaker(
    bind=engine,
    autoflush=False,
    autocommit=False
)

# 创建session实例(实例化)
db = SessionLocal()

# 创建新的User类实例

phyger = User(
    my_id = 1,
    name = 'phyger',
    passwd = 'pwd@123'
)

# 将phyger实例插入users表中

db.add(phyger)

# 提交后才算正式插入数据
db.commit()

# 关闭数据库连接
db.close()

执行代码后去 SQLitebrowser 中查看:

新增的数据

5数据查询 Query

# 创建session类对象(建立和数据库的链接)
SessionLocal = sessionmaker(
    bind=engine,
    autoflush=False,
    autocommit=False
)

# 创建session实例(实例化)
db = SessionLocal()

# 查询数据

res = db.query(User).all()
print(res)

# 条件查询
user1 = db.query(User).filter_by(my_id=1).first()
print(user1)

# 关闭数据库连接
db.close()

代码执行结果:

你会发现,日志中打印了实际执行的 SQL 语句,也将查询到的信息展示了出来。更多过滤条件可查看官方文档。

6数据更新

# 创建session类对象(建立和数据库的链接)
SessionLocal = sessionmaker(
    bind=engine,
    autoflush=False,
    autocommit=False
)

# 创建session实例(实例化)
db = SessionLocal()

# 更新数据

user1.name = 'flyGg'

db.commit()

# 更新后查询
user2 = db.query(User).filter_by(my_id=1).first()

print(user2.name)

# 关闭数据库连接
db.close()
代码执行的结果
SQLitebrowser中的效果

7数据删除 Delete

为方便演示,我们又添加了一条信息 phyger2

2条数据
# 创建session类对象(建立和数据库的链接)
SessionLocal = sessionmaker(
    bind=engine,
    autoflush=False,
    autocommit=False
)

# 创建session实例(实例化)
db = SessionLocal()

# 删除数据

user3 = db.query(User).filter_by(my_id=1).first()
db.delete(user3)
db.commit()

# 关闭数据库连接
db.close()
删除后SQLitebrowser的结果

参考:

https://www.cnblogs.com/lsdb/p/9835894.html

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

往期推荐

Gevent | 异步就用它!

5分钟带你了解Scrum

5分钟学会本地Pypi源搭建

jenkinsclient | 好用的jenkins客户端

FastApi-18-Token生成

FastApi-19-Token校验

FastApi-20-Token获取和使用

PyWebIo | 快速构建web应用

Partial | 超有用的偏函数

经典实践 | 网速测速小工具(上)

经典实践 | 网速测速小工具(下)

Schedule | 轻量化的定时任务框架

这个小工具竟然可以让我保持健康

点个

在看

你最好看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

肾模?你还不会sqlalchemy!【SQLite】 的相关文章

随机推荐

  • Sqlalchemy 2.x exists 使用方法

    Sqlalchemy 2 0 exists 使用方法 在sqlalchemy 1 4 中 想要查询一个数据在不在 可以用这种方法查询 from sqlalchemy import exists it exists Session query
  • 15个未来高科技产品会让你无法想象!这些开脑洞的设计太牛了!

    导读 从衣食住行到生活的方方面面 未来必将会有天翻地覆的变化 大数据 云计算 物联网和人工智能这些年的发展 让我们对并不遥远的未来有了更多想象和期待 那些我们现阶段不可企及的所思所想 将在未来成为大部分人的日常 这么想想 是不是有点小激动呢
  • 什么是代码评审(Code Review)

    1 什么是CodeReview Code Review CR 即代码评审 又名代码走查 是一种通过复查代码来提高代码质量的过程 一般体现在一个团队的开发过程中 CR要求团队成员有意识地 系统地检查彼此的代码 从而验证需求 发现错误 同时指出
  • JS数据类型转换详解

    文章内容为所看网课笔记 如有侵权请联系删除 JS数据类型 1 基本数据类型 number string undefined null boolean symbol bigint 2 引用数据类型 对象类型 1 标准普通对象 object 2
  • BLSP

    1 基础概念 1 Bus Access Module BAM 总线访问模块 BAM is used to move data to from the peripheral buffers 2 BAM Low Speed Peripheral
  • Topaz Sharpen AI中文版

    教程 1 下载解压软件得到安装包以及 2 双击 TopazSharpenAI 2 1 1 windows x64 Full Installer exe 开始安装软件 3 用户许可协议 这里选择i accept 4 选择软件的安装目录 开始菜
  • 【C++后台开发面试】STL相关

    此部分较为精简 只供面试前联想记忆使用 需要先熟读相关的内容知识才能发挥其作用 推荐书籍 STL源码剖析 侯捷 六大组件及其关系 空间配置器 容器 迭代器 算法 仿函数 适配器 内存管理 内存配置和对象构造 析构分开 使用双层级配置器 第一
  • 【文件包含漏洞-03】文件包含漏洞的利用及如何利用本地文件包含漏洞GetShell

    文件包含漏洞的利用 读取敏感文件 我们可以利用文件包含漏洞读取任意文件 读取文件的时候有利用条件 目标主机文件存在 目标文件的路径 绝对路径 相对路径 具有文件可读权限 提交参数http localhost include include
  • WinHTTP Web Proxy Auto-Discovery Service 服务处于 停止 状态

    WinHTTP Web Proxy Auto Discovery Service 服务处于 停止 状态还有 我的服务器没有使用WEB代理和防火墙客户端 但是有一天早上来发现全部电脑都无法上网 PING ISA都不通 重新启动后正常 我检查系
  • svn服务器搭建

    1 首先下载svn sudo apt get install subversion 如果不能安装先更新库再试 sudo apt get update 2 添加svn管理用户及subversion组 sudo adduser svnuser
  • 【Java】ThreadLocal详细解析

    ThreadLocal全面解析 前置知识 具有一定的javase和javaweb基础 熟悉synchronized关键字 熟悉HashMap 熟悉 JDBC技术 学习目标 了解ThreadLocal的介绍 掌握ThreadLocal的运用场
  • collapse mode 严重_被GANs虐千百遍后,我总结出来的10条训练经验

    一年前 我决定开始探索生成式对抗网络 GANs 自从我对深度学习产生兴趣以来 我就一直对它们很着迷 主要是因为深度学习能做到很多不可置信的事情 当我想到人工智能的时候 GAN是我脑海中最先出现的一个词 GANs生成的人脸 StyleGAN
  • 计算机系统的组成及编程示例

    计算机系统是由硬件和软件两部分组成的 硬件是指计算机的物理组件 如中央处理器 CPU 内存 硬盘 输入输出设备等 而软件则是指运行在计算机上的程序和数据 在计算机系统中 编程是一项重要的活动 它通过编写代码来实现特定的功能 编程语言是用来编
  • Mask_RCNN 配置并训练自己的数据集

    文章目录 1 配置Mask RCNN 并运行demo 1 1环境 1 2下载github 1 3安装依赖库 1 4安装Mask RCNN 1 5下载coco已训练好模型 1 6安装 pycocotools 1 7使用 Jupyter 运行
  • https://oshwhub.com/explore?page=6

    开源广场 嘉立创EDA开源硬件平台 硬件工程师的电路家园 oshwhub com
  • eclipse导入项目会有红叉叉

    eclipse导入项目会有红叉叉 我这边以导入的是SpringMVC项目为例 下面有很多图片 eclipse导入项目后 jsp页面都是红叉叉 注意 有一些情况有红叉叉的情况 是因为字符集 要把eclipse默认字符集设为UTF 8 第一步
  • 网络安全攻防对抗之白加黑技术

    目录 一 什么是白加黑技术 二 怎么防范白加黑技术 一 什么是白加黑技术 白加黑 手法是一种利用DLL劫持技术的攻击方式 它通过在应用程序的导出目录中创建一个DLL文件 并通过LoadLibrary函数 或者找一个已有的DLL注入恶意代码
  • 多元时间序列

    多元时间序列 BiLSTM双向长短期记忆神经网络多变量时间序列预测 Matlab完整程序 目录 多元时间序列 BiLSTM双向长短期记忆神经网络多变量时间序列预测 Matlab完整程序 预测结果 评价指标 基本介绍 程序设计 参考资料 预测
  • [YAPI]导出API文档

    1 进入某个分组主页 切换到 项目列表 菜单下 点击进入其中一个项目 2 切换到 数据管理 菜单下 执行导出功能
  • 肾模?你还不会sqlalchemy!【SQLite】

    Part1什么是 sqlalchemy sqlalchemy 是 Python 的一个优秀的开源 ORM 框架 为开发者提供了方便快捷的 API 能够提高开发效率 让开发者专心于业务代码开发 而非浪费时间在数据库的维护上 今天我们就来一起了