python SQLAlchemy ORM——从零开始学习 01 安装库

01基础库

1-1安装

依赖库:sqlalchemy

python 复制代码
pip install sqlalchemy
#直接安装即可

1-2导入使用

这里讲解思路【个人的理解】,具体写其实就是这个框架:

  1. 导入必要的接口【有创建engine以及declarative_base

    1. 通过create_engine接口创建engine,根据翻译可以翻译成引擎,和发动机一样,有了这个才能驱动数据库启动,但创建engine的接口接受的是一个针对 PostgreSQL的对象,对象的示例如:postgresql+psycopg2://scott:tiger@localhost:5432/mydatabase
    • 以下是官方对于这个engine的解释
  2. 创建引擎

    python 复制代码
    db_url = "sqlite:///database.db"	#本地的sqlite数据库的地址,没有则自动创建
    engine = create_engine(db_url)		#调用数据库的url地址创建引擎

    其中主要根据 sqlalchemy中的create_engine接口进行引擎的创建

    create_engine(url: str | URL) -> Engine

    其中URL就是上文提到的PostgreSQL的对象。这里是用sqlite,其他兼容数据库也可以使用,参照下图:

  3. 定义一个 sqlalchemyORM接口的基类,用于后续创建自定义的表、以及增删查改

    python 复制代码
    Base = declarative_base()

1-3 创建自己的表

  • 前面的逻辑和导入使用是重合的,主要就是创建一个自己自定义的数据库表类->继承于上文提到的接口基类,进行表的创建

  • 其中,使用Column接口来创建表的列,这个接口接受主要两个变量:第一个是类型【Column, Integer, String, Float】。第二个使用到的是primary_key,即数据库的主键(数据库中数值唯一的一种属性,一般是数据库自动添加的,例如作为整形id,如果主键为TURE,则id这个属性的数值不会重复)

  • Column(type_, *args, **kwargs)

    • type_ (必填):指定列的数据类型,例如 IntegerStringDateTime 等。
    • primary_key (可选):是否为主键,默认为 False
    python 复制代码
    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

    python 复制代码
    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)

    鸣谢以及参考:

    参考教程

相关推荐
StarPrayers.几秒前
基于PyTorch的CIFAR10加载与TensorBoard可视化实践
人工智能·pytorch·python·深度学习·机器学习
深蓝电商API12 分钟前
实战破解前端渲染:当 Requests 无法获取数据时(Selenium/Playwright 入门)
前端·python·selenium·playwright
程序边界1 小时前
AI时代如何高效学习Python:从零基础到项目实战de封神之路(2025升级版)
人工智能·python·学习
TTGGGFF3 小时前
云端服务器使用指南:利用Python操作mysql数据库
服务器·数据库·python
jie*3 小时前
小杰深度学习(four)——神经网络可解释性、欠拟合、过拟合
人工智能·python·深度学习·神经网络·scikit-learn·matplotlib·sklearn
jie*4 小时前
小杰深度学习(five)——正则化、神经网络的过拟合解决方案
人工智能·python·深度学习·神经网络·numpy·matplotlib
拉一次撑死狗4 小时前
TensorFlow(1)
人工智能·python·tensorflow
weixin_525936335 小时前
2020年美国新冠肺炎疫情数据分析与可视化
hadoop·python·数据挖掘·数据分析·spark·数据可视化
小李独爱秋5 小时前
【机器学习宝藏】深入解析经典人脸识别数据集:Olivetti Faces
人工智能·python·机器学习·计算机视觉·人脸识别·olivetti
Carl_奕然6 小时前
【大模型】Agent之:从Prompt到Context的演进之路
人工智能·python·语言模型·prompt·多模态