IT评测·应用市场-qidao123.com技术社区

标题: 使用 Flask 3 搭建问答平台(二):User 模型搭建 [打印本页]

作者: 知者何南    时间: 2024-7-22 09:15
标题: 使用 Flask 3 搭建问答平台(二):User 模型搭建
前言

以下所有代码均是在之前的基础上添加!!!
后面的章节均是如此
知识点

1. 使用 pymysql 模块毗连数据库
2. 在模型中创建用户数据表
3. 初始化数据库、创建初始迁移脚本、应用初始迁移脚本
一、User 模型搭建

1.1 准备数据库


1.2 config.py

  1. # 数据库配置信息
  2. HOST = '127.0.0.1'
  3. PORT = 3306
  4. DATABASE = 'qa'
  5. USER = 'root'
  6. PASSWORD = 'YDD5201314'
  7. DB_URI = 'mysql://{user}:{password}@{host}:{port}/{db}'.format(user=USER, password=PASSWORD, host=HOST, port=PORT, db=DATABASE)
  8. SQLALCHEMY_DATABASE_URI = DB_URI
复制代码

SQLALCHEMY_DATABASE_URI = DB_URI

1.3 models.py

  1. from datetime import datetime
  2. from exts import db
  3. class UserModel(db.Model):
  4.     __tablename__ = 'users'
  5.     id = db.Column(db.Integer, primary_key=True,autoincrement=True)
  6.     username = db.Column(db.String(20), unique=True, nullable=False)
  7.     password = db.Column(db.String(20), nullable=False)
  8.     email = db.Column(db.String(50), unique=True, nullable=False)
  9.     join_time = db.Column(db.DateTime(timezone=True), default=datetime.now)
复制代码

1.4 app.py

  1. from flask_migrate import Migrate
  2. import pymysql
  3. # 使 pymysql 模块模仿 MySQLdb 模块,从而让使用 MySQLdb 的代码可以无缝切换到 pymysql
  4. # 必须放在第一行
  5. pymysql.install_as_MySQLdb()
  6. # 这行代码初始化了 Flask-Migrate 扩展,用于处理数据库迁移
  7. migrate = Migrate(app, db)
复制代码
pymysql.install_as_MySQLdb() 

migrate = Migrate(app, db)

1.5 三部曲

  1. # 初始化数据库迁移环境:
  2. (venv) PS D:\Flask-zhiliao\flaskProject> flask db init
  3. Creating directory 'D:\\Flask-zhiliao\\flaskProject\\migrations' ...  done
  4. Creating directory 'D:\\Flask-zhiliao\\flaskProject\\migrations\\versions' ...  done
  5. Generating D:\Flask-zhiliao\flaskProject\migrations\alembic.ini ...  done
  6. Generating D:\Flask-zhiliao\flaskProject\migrations\env.py ...  done
  7. Generating D:\Flask-zhiliao\flaskProject\migrations\README ...  done
  8. Generating D:\Flask-zhiliao\flaskProject\migrations\script.py.mako ...  done
  9. Please edit configuration/connection/logging settings in 'D:\\Flask-zhiliao\\flaskProject\\migrations\\alembic.ini' before proceeding.
  10. # 创建初始迁移脚本:
  11. (venv) PS D:\Flask-zhiliao\flaskProject> flask db migrate
  12. INFO  [alembic.runtime.migration] Context impl MySQLImpl.
  13. INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
  14. INFO  [alembic.autogenerate.compare] Detected added table 'users'
  15. Generating D:\Flask-zhiliao\flaskProject\migrations\versions\7ea6eff38af5_.py ...  done
  16. # 应用迁移脚本到数据库:
  17. (venv) PS D:\Flask-zhiliao\flaskProject> flask db upgrade
  18. INFO  [alembic.runtime.migration] Context impl MySQLImpl.
  19. INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
  20. INFO  [alembic.runtime.migration] Running upgrade  -> 7ea6eff38af5, empty message
  21. (venv) PS D:\Flask-zhiliao\flaskProject>
复制代码
执行完成后会多出来个文件夹

数据库同样也生成了两张表


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4