当前位置:   article > 正文

Flask 3.0.0 使用Flask-Migrate 4.0.5 数据迁移说明_flask-migrate 4.0.5 用什么flask版本

flask-migrate 4.0.5 用什么flask版本

数据迁移就是将程序中定义的好的表结构映射到数据库中的过程,减少手动创建数据库表的麻烦。

Flask使用Flask-Migrate进行数据库对象迁移。

迁移的前提条件是在Python程序中定义好表结构,然后,进行如下操作:

  1. # 导入迁移对象
  2. from flask_migrate import Migrate as migrate
  3. # 实例化迁移对象
  4. grate = migrate(app, db)
  5. # 执行迁移步骤
  6. # migrate 的命令
  7. 1、flask db init ,#这步只执行一次
  8. 2、flask db migrate,#生成迁移脚本
  9. 3、flask db upgrate,#运行迁移脚本,同步到数据库中

案例代码如下:

  1. from flask import Flask, Response, request, render_template
  2. from flask_sqlalchemy import SQLAlchemy
  3. from sqlalchemy import text
  4. from urllib.parse import quote_plus as urlquote
  5. import random
  6. import uuid
  7. from datetime import datetime
  8. import sqlalchemy.types as types
  9. from flask_migrate import Migrate as migrate
  10. app = Flask(__name__)
  11. HOST = 数据库IP
  12. PORT = 数据库端口
  13. USERNAME = 用户名
  14. PASSWORD = 密码
  15. DATABASE = 数据库名
  16. strPwd = urlquote(PASSWORD)
  17. app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{strPwd}@{HOST}:{PORT}/{DATABASE}?charset=utf8"
  18. db = SQLAlchemy(app)
  19. grate = migrate(app, db)
  20. # migrate 的命令
  21. # 1、flask db init ,这步只执行一次
  22. # 2、flask db migrate,生成迁移脚本
  23. # 3、flask db upgrate,运行迁移脚本,同步到数据库中
  24. with app.app_context():
  25. with db.engine.connect() as conn:
  26. sql = text(" select * from xc_role ")
  27. # rs = conn.execute(sql)
  28. # print(rs.fetchone())
  29. class Role(db.Model):
  30. __tablename__ = "xc_role"
  31. id = db.Column(db.String(32), primary_key=True)
  32. role_name = db.Column(db.String(255), nullable=True)
  33. role_code = db.Column(db.String(255), nullable=True)
  34. description = db.Column(db.String(255), nullable=True)
  35. create_time = db.Column(db.DateTime, nullable=True)
  36. update_time = db.Column(db.DateTime, nullable=True)
  37. status = db.Column(db.String(1), nullable=True)
  38. @app.route("/add_role")
  39. def add_role():
  40. idStr = str(uuid.uuid4())
  41. idStr = idStr.replace("-", "")
  42. roleCodeStr = str(uuid.uuid4())
  43. role = Role(id=idStr, role_name=roleCodeStr, role_code=roleCodeStr, description="设置管理员角色",
  44. create_time=datetime.now(), update_time=datetime.now(), status="1")
  45. db.session.add(role)
  46. db.session.commit()
  47. return Response("添加角色信息成功", 200)
  48. @app.route("/query_role")
  49. def query_role():
  50. role = Role.query.get('308041566e7742829bd55867ca069473')
  51. print(f"{role.role_name}")
  52. return "查询角色成功"
  53. @app.route("/delete_role")
  54. def delete_role():
  55. role = Role.query.get('78c5411d945b40adb1b370c2a646b7b9')
  56. db.session.delete(role)
  57. db.session.commit()
  58. return "删除角色成功"
  59. @app.route("/update_role")
  60. def update_role():
  61. role = Role.query.get('308041566e7742829bd55867ca069473')
  62. role.role_name = "jijinliang"
  63. db.session.commit()
  64. return "更新角色成功"
  65. @app.route("/query_type")
  66. def query_type():
  67. return "查询类型成功"
  68. @app.route('/')
  69. def index():
  70. # put application's code here
  71. name = "名称"
  72. return render_template('index.html', name=name)
  73. @app.route('/show')
  74. def show():
  75. return Response("展示SHOW方法信息", 200)
  76. @app.route('/parse/<int:post_id>')
  77. def parse(post_id):
  78. """
  79. 解析信息
  80. """
  81. username = "jijinliang"
  82. return Response(f"解析信息方法{username},数字是:{post_id}", 200)
  83. @app.route("/page")
  84. def page():
  85. num = request.args.get("num", default=1, type=int)
  86. return Response(f"您当前访问的页面是{num}", 200)
  87. if __name__ == '__main__':
  88. app.run(host='0.0.0.0', debug=True)

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/191295
推荐阅读
相关标签
  

闽ICP备14008679号