SQLAlchemy-----ORM框架

1.介绍

django框架有独属于它自己的ORM框架,然而flask没有自己的ORM框架,但是python中有许多ORM框架,就比如:SQLAlchemy

今天我们就学习在flask中使用SQLAlchemy

 关于ORM:

全称Object Relational Mapping(对象关系映射)。

特点是操纵Python对象而不是SQL查询,也就是在代码层面考虑的是对象,而不是SQL,体现的是一种程序化思维,这样使得Python程序更加简洁易读。

具体的实现方式是将数据库表转换为Python类,其中数据列作为属性,数据库操作作为方法。 

优点:

  1. 简洁易读:将数据表抽象为对象(数据模型),更直观易读
  2. 可移植:封装了多种数据库引擎,面对多个数据库,操作基本一致,代码易维护
  3. 更安全:有效避免SQL注入

 2.使用步骤

1.安装

pip install SQLalchemy

 2. 创建连接   

engine = create_engine(
                     用户名:密码@地址:端口/数据库名?编码
    "mysql+pymysql://root:[email protected]:3306/db001?charset=utf8",
    max_overflow=0,  # 超过连接池大小外最多创建的连接
    pool_size=5,  # 连接池大小
    pool_timeout=30,  # 池中没有线程最多等待的时间,否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)

 注意:

        1.我这里连接的数据库是mysql

        2.使用的是模块pymysql操作mysql------------安装pip install pymysql

3. 创建数据库表类(模型)

前面有提到ORM的重要特点,那么我们操作表的时候就需要通过操作对象来实现,现在我们来创建一个类,以常见的用户表举例: 

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, create_engine, Integer,
                                 Text, DateTime, UniqueConstraint, Index, ForeignKey
Base = declarative_base()


class Users(Base):
    __tablename__ = "users"     #表明

    id = Column(Integer, primary_key=True)
    name = Column(String(64), unique=True)
    email = Column(String(64))

       def __str__(self):
        return self.name

    def __repr__(self):
        return self.name

declarative_base()是sqlalchemy内部封装的一个方法,通过其构造一个基类,这个基类和它的子类,可以将Python类和数据库表关联映射起来。

数据库表模型类通过__tablename__和表关联起来,Column表示数据表的列。

4. 生成数据库表

Base.metadata.create_all(engine) 

5.操作表数据下次谈

你可能感兴趣的:(flask,数据库)