加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 (https://www.pinziwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

1.With上下文管理器

发布时间:2022-11-03 11:12:11 所属栏目:MySql教程 来源:
导读:  1.With上下文管理器

  常用:

  with open("file_name","wb") as f:
   f.write("hello flask")
  自定义:

  class Foo(gbiect):
   def __enter__(self):
   ""

  1.With上下文管理器
 
  常用:
 
  with open("file_name","wb") as f:
      f.write("hello flask")
  自定义:
 
  class Foo(gbiect):
      def __enter__(self):
          """进入with语句的时候被with调用"""
          print("enter called")
      def __exit_(self, exc_type, exc_val, exc_tb):
          """离开with语句的时候被with调用"""
          print("exit called")
          print("exc_type:%s" % exc_type)
          print("exc_val:9%s" % exc_val)
          print("exc_tb:%s"%exc_tb)
  with Foo() as foo:
      print("helto python")
      a=1/0
      print("hello end")
  运行结果:
 
   enter called
    Traceback (most recent call last):
    hello python
      File"/Users/delron/Desktop/code/03 with. py", line 39, in
    exit called
         a=1/0
    ZeroDivisionError: integer division or modulo by zero
    exc_type:
    exc_val: integer division or modulo by zero
    exc_tb:
    Process finished with exit code 1
  2. Json模块
 
  dumps —> 可以将字典转换为字符串
      import json
      a = '{"city": "sz", "country": "china"}'
      b = json.loads(a)
      print(type(b), b)
    运行结果:
      dict {"city": "sz", "country": "china"}
  3. xss攻击
 
  当前段传送过来的数据默认进行转义,否则,则会默认执行前端传送的数据,则称为xss攻击
 
  4. flask 和mysql
 
   Linux:
    flask使用mysql数据库需要:
      1、pymysql
      2、sqlalchemy
      3、flask_sqlalchemy
    windows:
      Flask利用pymysql出现Warning:1366的解决办法
      flask使用mysql数据库需要:
  mysql-connector-python
  sqlalchemy
  flask_sqlalchemy
  SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:mysql@localhost/ihome01"
  5. 装饰器
 
    @app.route("/")
    def index():
     return "index page"
    def index():
      return "index page"
    app.route("/)(index)
  装饰器不仅仅是定义时可以用,还可以在定义完再使用
  6. 自定义正则转换器及蓝图
 
  from werkzeug.routing import BaseConverter
  定义正则转换器
 
  class ReConverter(BaseConverter):
 
  def __init__(self, url_map, regex):
      # 调用父类初始化方法
      super(ReConverter, self).__init__(url_map)
      # 重新赋值
      self.regex = regex
  添加自定义的转换器
 
   app.url_map.converters["re"] = ReConverter
    from flask import Blueprint, current_app
    html = Blueprint("web_html", __name__)
    @html.route("/")
    def web_html(file_name):
      if not file_name:
          file_name = "index.html"
      if file_name != "favicon.ico":
          file_name = "html/" + file_name
      return current_app.send_static_file(file_name)
  注册蓝图7. 登录装饰器
 
  def login_required(view_func):
      # wraps函数的作用是将wrapper内层函数的属性设置为被装饰函数view_func的属性
      @functools.wraps(view_func)
      def wrapper(*args, **kwargs):
          # 判断用户登录状态
          user_id = session.get("user_id")
          # 如果用户是登录状态,则执行登录状态
          if user_id is not None:
              # 将user_id保存到g对象中,在视图函数中,可以通过g对象获取保存数据
              g.user_id = user_id
              return view_func(*args, **kwargs)
          # 如果未登录,则返回未登录信息
          else:
              return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")
      return wrapper
  8. 视图函数9. 参数获取
 
  house_data = request.get_json()
 
  image_file = request.files.get(“house_image”)
 
  house_id = request.form.get(“house_id”)
 
  10. 数据库操作
 
  在同一视图函数中,可以对对象多次修改mysql管理器,只提交一次即可
 
   db.session.add(house_image)
    db.session.add(house)
    try:
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
  Original:
 
  Author: 小高、
 
  Title: Flask 易错点
 

(编辑:拼字网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!