Flask-SQLAlchemy配置连接MySQL及表的生成

作为初学者,通过小的项目学习了如何使用Flask-SQLAlchemy连接MySQL以及表的生成

这是python配置数据库的格式

Flask-SQLAlchemy配置连接MySQL及表的生成_第1张图片

一 先安装flask_sqlAlchemy包

pip install flask-sqlalchemy
二 配置flask-sqlalchemy连接MySQL数据库
 from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:root@localhost:3306/pythondb?charset=utf8'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
三 定义models.创建表

models.py

# -*-coding:utf-8 -*-
from . import db,login_manager
from flask_login import UserMixin
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(40),nullable=True)
    users = db.relationship('User', backref='role')

# 静态法法
    @staticmethod
    def seed():
        db.session.add_all(map(lambda r: Role(name=r), ['Guests', 'Administrators']))
        db.session.commit()

class User(UserMixin,db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(40),nullable=True)
    email = db.Column(db.String(40),nullable=True)
    password = db.Column(db.String(40),nullable=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

# 事件处理器 创建USER时 ROLE的name设置为"Guests"
    @staticmethod
    def on_created(target, value,  initiator):
        target.role = Role.query.filter_by(name='Guests').first()
#加入事件的监听器 实现触发器
db.event.listen(User.name, 'append', User.on_created)

上面连接和定义操作完成了

这是我项目的表结构:

Flask-SQLAlchemy配置连接MySQL及表的生成_第2张图片

下面开始使用shell命令 在mysql里自动创建表



脚本执行完成 查看MySql里面 两张表自动生成了


哈哈 然后神奇的连接加创表成功!!!!

你可能感兴趣的:(python)