Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
pytest==5.4.0
allure-pytest==2.8.15
allure-python-commons==2.8.15
pytest-rerunfailures==9.0
allure-python-commons==2.8.15
configparser==5.0.0
PyYAML==5.3.1
requests==2.23.0
requests-toolbelt==0.9.1
simplejson==3.17.0
ruamel.yaml==0.16.10
#初始化
from flask import Flask
app=Flask(__name__)
#路由和视图函数
@app.route('/')
def index():
return 'Hello world'
#启动服务
if __name__=='__main__':
app.run(debug=True)
class Role(db.Model):
__tablename__ = 'roles'
id= db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
users = db.relationship('User', backref='role', lazy='dynamic')
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True, index=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
tb_student_course = db.Table('tb_student_course',
db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))
)
class Student(db.Model):
__tablename__ = "students"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
courses = db.relationship(
'Course',
secondary=tb_student_course,
backref=db.backref('students', lazy='dynamic'),
lazy='dynamic'
)
class Course(db.Model):
__tablename__ = "courses"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
class Comment(db.Model):
"""评论"""
__tablename__ = "comments"
id = db.Column(db.Integer, primary_key=True)
# 评论内容
content = db.Column(db.Text, nullable=False)
# 父评论id
parent_id = db.Column(db.Integer, db.ForeignKey("comments.id"))
parent = db.relationship(
"Comment",
remote_side=[id],
backref=db.backref('childs', lazy='dynamic')
)
from flask_wtf import FlaskForm
from wtforms import StringField,TextAreaField,SubmitField,SelectField
from wtforms.validators import DataRequired
class NewsForm(FlaskForm):
title = StringField(label='新闻标题',validators=[DataRequired("请输入标题")],description="请输入标题",render_kw={"required":"required"})
content = TextAreaField(label='新闻内容',validators=[DataRequired("请输入内容")],description="请输入内容",render_kw={"required":"required","class":"form-control"})
types = SelectField(label='新闻类型',choices=[('首页','首页'),('动漫周边','动漫周边'),('军事要闻','军事要闻'),('每日上海','每日上海'),('图片','图片')])
image = StringField(label='新闻图片',description="请输入图片地址",render_kw={"required":"required","class":"form-control"})
submit = SubmitField('提交')
创建数据库 create database [数据库名];
查看数据库 show databases;
指定数据库 use [数据库名];
删除数据库 drop database [数据库名] (慎用);
插入操作:
全列插入:insert into [表名] values (对应的列数据);
指定列插入:insert into [表名] (若干个指定列) values (对应的列数据) ;没有被插入的列会默认被填充为NULL;
一次插入多条记录:insert into [表名] values (对应的列数据),(对应的列数据)…;
修改:
update [表名] set [列名] = [修改的值],[列名] = [修改的值] where 子句
删除:
delete from [表名] [where…][order by…][limit…]