作为初学者,通过小的项目学习了如何使用Flask-SQLAlchemy连接MySQL以及表的生成
这是python配置数据库的格式
一 先安装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)
上面连接和定义操作完成了
这是我项目的表结构:
下面开始使用shell命令 在mysql里自动创建表
脚本执行完成 查看MySql里面 两张表自动生成了
哈哈 然后神奇的连接加创表成功!!!!