zoukankan      html  css  js  c++  java
  • ORM模型框架(使用mysql)

    【什么是ORM】

    ORM 全称是(Object Relational Mapping)表示对象关系映射; 通俗理解可以理解为编程语言的虚拟数据库;

    【理解ORM】

    用户地址信息数据库表与对象的映射

     

     【ORM的重要特性】

    1.面向对象的编程思想,方便扩充

    2. 少写(几乎不写)sql,提升开发效率

    3.支持多种类型的数据库(常用的mysql,pg,oracle等等),方便切换

    4.ORM技术已经相当成熟,能解决绝大部分问题

    【ORM模型框架的选择】

    【SQLAlchemy ORM模型】

    众所周知,ORM框架模型可选择的有很多,那么我们这边选择了SQLAlchemy 模型框架

    pip install SQLAlchemy  安装sql alchemy; 也可以指定版本号pip install SQLAlchemy ==1.4.17

    import sqlalcherm;  sqlalchemy.__version__;  验证是否安装成功及版本号;

    【SQL Alchemy的使用】

    • 一.开始连接数据库
    • 二.声明ORM模型基类
    • 三.实现ORM模型类
    • 四.同步数据库表

    【开始连接数据库】

    • 延迟连接(Lazy Connecting)——只有在真正操作数据库的时候,才会连接数据库
    • 连接代码示例
    from sqlalchemy import  create_engine
    
    create_engine("mysql://root:@127.0.0.1:3306/school?charset=utf8,echo=True,future=True")

    【create_engine参数解释】

    1. url(默认第一个参数)——连接到哪种类型的数据库,如:mysql;以哪种数据库连接器(驱动)来连接数据库
    2. echo——是否输出logging(日志)信息,会把日志都打印出来
    3. future使用SQLAlchemy2.0 API风格

    【SQLAlchemy配置】

     当密码中含有特殊字符时,怎么处理?

    话不多说,见下方代码

    from urllib.parse import quote_plus
    如果密码里有特殊字符时,这边需要导入一个类来处理
    
    
    password_formatted= quote.plus("mima%&&&mima")
    把处理后的密码粘贴到上方的sqlalchemy配置中,即可

     【声明ORM模型基类】

    from sqlalchemy.orm import declarative_base
    
    声明这个基类
    Base = declarative_base()

    【实现ORM模型类】

    如何实现? 我们需要写1个类去继承他

    然后还需要设立1个属性

    from sqlalchemy import Column, Integer, String, DateTime
    
    
    class Student(Base):
        """学生信息表"""
        __tablename__ = 'student'
        id = Column(Integer, name='id', primary_key=True)
        stu_no = Column(Integer, nullable=False, comment='学号')
        stu_name = Column(String(16), nullable=False, comment='姓名')
        created_at = Column(DateTime)

     【同步数据库表】

    1.需要在同步之前保证 数据库中有这个库,如果没有,则需要手动创建

    2 创建表,删除表

    from  orm_connect_example import Base ,engine
    
    # 创建表
    Base.metadata.create_all(engine)
    
    #删除表
    Base.metadata.drop_all(engine)

    【ORM对应的模型字段类型】

     

     【代码示例】

    from sqlalchemy import create_engine
    from sqlalchemy.orm import declarative_base
    from sqlalchemy import Column, Integer, String, DateTime
    
    # 第一步,准备连接
    engine = create_engine('mysql://root:@10.72.100.1:8081/test_database_1?charset=utf8',echo=True)
    
    # 第二步,声明ORM模型的基类
    Base = declarative_base()
    
    
    # 第三步,实现ORM模型类
    class Student(Base):
        """学生信息表"""
        __tablename__ = 'student'
        id = Column(Integer, name='id', primary_key=True)
        stu_no = Column(Integer, nullable=False, comment='学号')
        stu_name = Column(String(16), nullable=False, comment='姓名')
        created_at = Column(DateTime)
    #第四步 同步数据库表
    def create_table()
        """同步数据库表"""
        # 新建表
        Base.metadata.create_all(bind=engine)
        # 删除表
        Base.metadata.drop_all(bind=engine)
  • 相关阅读:
    Thinkphp5.0 模型hasOne、hasMany、belongsTo详解
    ES6中async和await说明和用法
    必会SQL练习题
    Git初识学习
    CI框架简单使用
    JavaScript 的 this 原理
    javascript实现游戏贪吃蛇
    js清除childNodes中的#text(选项卡中会用到获取第一级子元素)
    JavaNIO
    MongoDB入门_shell基本操作
  • 原文地址:https://www.cnblogs.com/xinhua19/p/15038353.html
Copyright © 2011-2022 走看看