Flask框架(flask中的数据库SQLAlchemy(python3),配置、模型类、创建表)

1.  SQLAlchemy是一个关系型数据库框架,

     它提供了高层的ORM和底层的原生数据库的操作。

      flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展。

2. 安装   

   环境   python3.6  +  window10   +  pycharm  

   pip  install flask-sqlalchemy

   pip install mysql-connector     #  安装驱动       (不安装的话会报出警告)

  如果用的虚拟环境,记得安装在虚拟环境当中

 3. sqlalchemy的常用配置

    (1)    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://root:[email protected]:3306/test'

           # 后面字符串的解释  mysql+mysqlconnector://用户名:密码@127.0.0.1:3306/数据库名

            一般IP和端口都是  127.0.0.1:5000

 ( 2) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

     #  True 让数据库里面的数据和模型数据库里面的数据保持一致

 (3)  #查询时会显示原始SQL语句
       app.config['SQLALCHEMY_ECHO'] = True

4. 创建模型类: 

  模型类;    创建数据库模型类(继承 sqlalchemy 工具对象中的Model类),

                一个模型类对应一张模型表

                数据库表名的常见规范:

                               (1) 数据库名缩写_表名                       (2) tbl_表名

创建模型类时常用的SQLAlchemy字段类型 :

 创建模型类时常用的SQLAlchemy列选项 :

 创建模型类时常用的SQLAlchemy关系选项:

5. 创建所有的表:  db.drop_all()

    删除所有的表:  db.create_all()

  注意: db是       db = SQLAlchemy(app)   # 创建数据库 sqlalchemy 工具对象

 6. 创建一个用户表和用户身份表,并做好设置,运行程序,没有报错 即创建成功,或者自己也可以在程序完成之后

     print("创建成功"),,看下面的程序

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)


class Config(object):
    """配置参数"""
    '''sqlalchemy的配置参数'''
    SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:[email protected]:3306/db_python"
    '''设置sqlalchemy自动跟踪数据库'''
    SQLALCHEMY_TRACK_MODIFICATIONS = True


# 设置参数
app.config.from_object(Config)

'''创建数据库 sqlalchemy 工具对象'''
db = SQLAlchemy(app)

"""
    创建数据库模型类(继承 sqlalchemy 工具对象中的Model类),一个模型类对应一张模型表
    数据库表名的常见规范:
        (1) 数据库名缩写_表名   (2) tbl_表名
"""


class Role(db.Model):
    """用户身份表"""
    __tablename__ = "tbl_roles"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), unique=True)
    '''
        relationship()把两个表关联在一起,不添加也是可以的,根据自己的需求
        backref : 在关系的另一模型中添加反向引用
                   相当于给要关联的表添加一个role属性
                   不添加也是可以的,根据自己的需求 
    '''
    user = db.relationship("User", backref="role")  # 从模型类中


class User(db.Model):
    """用户表"""
    __tablename__ = "tbl_users"  # 指明数据库的表名

    id = db.Column(db.Integer, primary_key=True)  # 整型的主键,会默认设置为自增主键
    name = db.Column(db.String(64), unique=True)
    email = db.Column(db.String(128), unique=True)
    password = db.Column(db.String(128))
    role_id = db.Column(db.Integer, db.ForeignKey("tbl_roles.id"))  # 从底层中


if __name__ == '__main__':
    '''清除数据库中的所有数据'''
    db.drop_all()
    '''创建所有表'''
    db.create_all()

 然后在数据库中,就可以看见,创建好的表,如下图:

这个就直接把模型类即模型表就创建好了

猜你喜欢

转载自blog.csdn.net/wei18791957243/article/details/85254130
今日推荐