Flask开发学习笔记2
Flask 使用SQLAlchemy自动生成数据表
代码目录
db/mysql.py
def mysqlInit(db,app):
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/testDB"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db.init_app(app)
def mysqlCreate(db,app):
from application.models import Student
from application.models import Teacher
db.create_all(app=app)
其实也可以使用上下文app,但是我习惯了go的函数是编程,db.create_all()需要先导入模型才能正常使用
application/ _ _ init _ _.py
from flask import Flask
from db.mysql import *
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
mysqlInit(db,app)
mysqlCreate(db,app)
# mysqlCreate(app)
return app
工厂模式生成app
application/models/Student.py
from application import db
class Student(db.Model):
__tablename__ = "Student_Card"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
phone = db.Column(db.String(120), unique=True)
def __init__(self, username, email,phone):
self.username = username
self.email = email
self.phone = phone
def __repr__(self):
return '<User %r>' % self.username
def add(ob):
db.session.add(ob)
db.session.commit()
要到导入被实例化的db,才能正常生成数据表
application/models/Teacher.py
from application import db
class Teacher(db.Model):
__tablename__ = "Teacher_Card"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
phone = db.Column(db.String(120), unique=True)
def __init__(self, username, email,phone):
self.username = username
self.email = email
self.phone = phone
def __repr__(self):
return '<User %r>' % self.username
def add(ob):
db.session.add(ob)
db.session.commit()
同理,导入被实例化的db
app.py
from application import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
程序入口