flask框架—-扩展


DEBUG = True
ENV = 'development'

项目中直接,
app.config.from_pyfile(“settings.py”)


{
    "DEBUG": "True",
}

app.config.from_json(“settings.json”)


app.config.from_mapping({"DEBUG": True})

import os
os.environ["MyConfig"] = 'myconfig.py'
app.config.from_envvar('MyConfig')

class ProductionConfig(object):
    ENV='production'
    DEBUG=False

from settings import ProductionConfig
app.config.from_object(ProductionConfig)

flask-sqlalchemy


pip install flask-sqlalchemy

from flask_sqlalchemy import SQLAlchemy
import pymysql
pymysql.install_as_MySQLdb()

SQLALCHEMY_DATABASE_URI = "mysql://lauf:lauf123@localhost:3306/world"

SQLALCHEMY_TRACK_MODIFICATIOINS = True

SQLALCHEMY_ECHO = True

app = Flask(__name__)
app.config.from_pyfile("settings.py")

db = SQLAlchemy(app)

class UserByFlask(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(30), nullable=True)
    age = db.Column(db.Integer)

db.create_all(app=app)

插入数据


user1 = UserByFlask(name="jack", age=10)
user2 = UserByFlask(name="lucy", age=20)

db.session.add_all([user1, user2])

db.session.commit()

另外,还可以为模型类定义函数,实现自动添加数据


def set_attr(self, data):
    if isinstance(data,dict):
        for k, v in data.items():
            if hasattr(self, k) and k != 'id':
                setattr(self, k, v)
    else:
        raise Exception('{0} must be dict'.format(data))

data = {'name':'lucy','age':23, }
book = Book()
book.set_attr(data)

db.session.add_all([book])

db.session.commit()

查询数据


result = UserByFlask.query.all()

for i in result:
    print(i.name)

r = Book.query.filter(Book.username == 'jack').all()
r = Book.query.filter(Book.username == 'jack').first()

r = Book.query.get(id)
r.name = "lucy"
db.session.commit()

db.session.delete(r)
db.session.commit()

db.session.rollback()

xxx
过滤器 说明
filter() 把过滤器添加到原查询上, 返回一个新查询
filter_by() 把等值过滤器添加到原查询上, 返回一个新查询
limit() 使用是zing的值限制原查询返回的结果数量, 返回一个新查询
offset() 偏移原查询返回的结果, 返回一个新查询
order_by() 根据指定条件对原查询结果进行排序, 返回一个新查询
group_by() 根据指定条件对原查询结果进行分组, 返回一个新查询

all() 以列表形式返回查询的所有结果
first() 以列表形式返回查询的第一个结果,如果没有结果,则返回 None
first_or_404() 返回查询的第一个结果,如果未查到,返回404
get() 返回指定主键对应的行,如不存在,返回None
get_or_404() 返回指定主键对应的行,如不存在,返回404
count() 返回查询结果的数量
paginate() 返回一个Paginate对象,它包含指定范围内的结果

flask-mail


pip install flask-mail

from flask_mail import Mail, Message

mail = Mail(app)

mail = Mail()
mail.init_app(app)

案例:


MAIL_SERVER = "smtp.qq.com"
MAIL_PORT = 25
MAIL_USERNAME = "944582529@qq.com"
MAIL_PASSWORD = "gvgyqnhuxrhybcje"
MAIL_USE_TSL = True


from flask_mail import Mail, Message

app = Flask(__name__)

app.config.from_pyfile("settings.py")

mail = Mail(app)

@app.route("/send_mail", methods=["GET", "OPTIONS"])
def send_mail():

    r = mail.send_message("subject", body="2", sender="944582529@qq.com", recipients=["944582529@qq.com"])

    res = jsonify({"code": 200, "msg": "发送邮件成功"})
    res.headers["Access-Control-Allow-Origin"] = "http://localhost:8080"
    res.headers["Access-Control-Allow-Credentials"] = "true"
    res.headers["Access-Control-Allow-Headers"] = "x-requested-with, authorization, token, content-type"

    return res

也可以不指定sender参数,直接配置在settings.py中

MAIL_DEFAULT_SENDER = "XXX"

Original: https://blog.csdn.net/weixin_45228198/article/details/124254650
Author: laufing
Title: flask框架—-扩展

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/745302/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球