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/
转载文章受原作者版权保护。转载请注明原作者出处!