首页 > Python资料 博客日记
python SQLAlchemy ORM——从零开始学习 01 安装库
2025-01-07 23:30:02Python资料围观32次
这篇文章介绍了python SQLAlchemy ORM——从零开始学习 01 安装库,分享给大家做个参考,收藏Python资料网收获更多编程知识
01基础库
1-1安装
依赖库:sqlalchemy
pip install sqlalchemy
#直接安装即可
1-2导入使用
这里讲解思路【个人的理解】,具体写其实就是这个框架:
-
导入必要的接口【有创建
engine
以及declarative_base
】- 通过
create_engine
接口创建engine
,根据翻译可以翻译成引擎,和发动机一样,有了这个才能驱动数据库启动,但创建engine
的接口接受的是一个针对 PostgreSQL的对象,对象的示例如:postgresql+psycopg2://scott:tiger@localhost:5432/mydatabase
- 以下是官方对于这个
engine
的解释:
- 通过
-
创建引擎
db_url = "sqlite:///database.db" #本地的sqlite数据库的地址,没有则自动创建 engine = create_engine(db_url) #调用数据库的url地址创建引擎
其中主要根据
sqlalchemy
中的create_engine
接口进行引擎的创建create_engine(url: str | URL) -> Engine
其中URL就是上文提到的PostgreSQL的对象。这里是用sqlite,其他兼容数据库也可以使用,参照下图:
-
定义一个
sqlalchemy
ORM接口的基类,用于后续创建自定义的表、以及增删查改Base = declarative_base()
1-3 创建自己的表
-
前面的逻辑和导入使用是重合的,主要就是创建一个自己自定义的数据库表类->继承于上文提到的接口基类,进行表的创建
-
其中,使用
Column
接口来创建表的列,这个接口接受主要两个变量:第一个是类型【Column, Integer, String, Float】。第二个使用到的是primary_key
,即数据库的主键(数据库中数值唯一的一种属性,一般是数据库自动添加的,例如作为整形id
,如果主键为TURE,则id
这个属性的数值不会重复) -
Column(type_, *args, **kwargs)
type_
(必填):指定列的数据类型,例如Integer
、String
、DateTime
等。primary_key
(可选):是否为主键,默认为False
。
from sqlalchemy import create_engine, Column, Integer, String, Float from sqlalchemy.orm import declarative_base db_url = "sqlite:///database.db" engine = create_engine(db_url) Base = declarative_base() class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) Base.metadata.create_all(engine)
-
最后使用
Base.metadata.create_all(engine)
接口创建这个数据库的所有表-
功能:
自动创建表:
create_all()
会基于模型中定义的表结构自动创建数据库表。如果表已经存在,则不会重新创建。数据库初始化:通常在应用程序第一次启动时,调用
create_all()
来创建数据库结构。支持多个表:
create_all()
会创建所有在Base
中定义的模型所对应的表。
1-4 all code
from sqlalchemy import create_engine, Column, Integer, String, Float from sqlalchemy.orm import declarative_base db_url = "sqlite:///database.db" engine = create_engine(db_url) Base = declarative_base() class User(Base): __tablename__ = "user" id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) def __repr__(self):#这个函数可以不用,不影响,为了能直接print这个类对象 return f"id:{self.id}, name:{self.name}, age:{self.age}" Base.metadata.create_all(engine)
鸣谢以及参考:
-
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- python 中列表 (list) 的超详细说明
- 【Pip】深入理解 `requirements.txt` 文件:Python 项目依赖管理的核心工具
- 【python完整代码实现外星人入侵游戏】
- 华为OD机试E卷 --增强的strstr--24年OD统一考试(Java & JS & Python & C & C++)
- Python在多个Excel文件中找出缺失数据行数多的文件
- 【Python】【数据分析】Python 数据分析与可视化:全面指南
- python与pycharm如何设置文件夹为源代码根目录
- (2025自测有效!)全网最好的python配置教程【非常非常适合小白】
- Python的pandas库基础知识(超详细教学)
- python利用selenium实现大麦网抢票
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程