阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

模型的基本使用

159次阅读
没有评论

共计 1879 个字符,预计需要花费 5 分钟才能阅读完成。

一、安装扩展库

  1. 安装 pymysql 扩展库
pip install pymysql
  1. 安装 flask-sqlalchemy 扩展库
pip install flask-sqlalchemy

本扩展库为 flask 用于操作数据库进行 ORM 转换

二、代码配置

在 manage.py 中添加如下代码

from flask import Flask # 导入 Flask 类 # 导入 ORM 转换库 from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 进行实例化 # 配置数据库 # 设置链接数据库的 URI mysql+pymysql:// 数据库用户名: 密码 @ip: 端口 / 数据库名 app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://lucky:123456@127.0.0.1:3306/lucky" # 进制对象的修改追踪 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False # 创建数据库对象 db = SQLAlchemy(app)

三、表分析

需求: 创建用户表

  1. 一个用户表所需字段

    用户名 密码 性别 年龄 是否删除

  2. 创建模型代码位置

    manage.py(当前阶段为 manage.py)

  3. 模型、属性、表之间的关联

    一个模型类 对应数据库中的一张表 一个类属性 对应 表中的一个字段

  4. 创建用户表模型

class User(db.Model): __tablename__ = "user" # 指定表名 id = db.Column(db.Integer, primary_key=True) # 设置主键 username = db.Column(db.String(12)) # 用户名 最大长度 12 password = db.Column(db.String(64)) # 用户密码 最大长度 64 sex = db.Column(db.Boolean, default=True) # 性别 默认为 True age = db.Column(db.Integer, default=18) # 年龄 默认 20 岁 isDelete = db.Column(db.Boolean, default=False) # 是否删除 默认不删除

四、创建表

@app.route('/createtable/') def create_table(): db.create_all() return '创建表'

后期不使用当前方式进行表的创建

五、删除表

@app.route('/droptable/') def drop_table(): db.drop_all() return '删除表'

后期不使用当前方式进行表的创建

六、测试数据库

  1. 安装 flask-script 扩展库

    什么是 Flask-Script?

    Flask-Script 用来生成 shell 命令 为在 Flask 里编写额外的脚本提供了支持

    安装

    pip install flask-script
  2. 配置

    from flask_script import Manager app = Flask(__name__) # Manager 类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况 manager = Manager(app) if __name__ == "__main__": # 将启动 Manger 实例接收命令行中的命令 manager.run()
  3. 进入到 python shell 进行测试

    python manage.py shell

  4. 导入 User 模型类以及 db 对象

    >>> from manage import User,db
  5. 添加数据

    >>> u = User() # 实例化 User 模型类 >>> u.username = 'lucky' # 添加用户名 >>> u.password = 123456 # 添加密码 >>> u.sex = True # 添加性别 >>> u.age = 18 # 添加年龄 >>> db.session.add(u) # 进行保存 >>> db.session.commit() # 事务提交
  6. 查询数据

    >>> u = User.query.get(1) # 查询 id 为 1 的用户对象 >>> u <User 1> >>> u.username 'lucky'
  7. 修改数据

    >>> u = User.query.get(1) # 查询 id 为 1 的用户对象 >>> u.username = '帅气的 lucky' # 修改用户名为帅气的 lucky >>> db.session.add(u) # 进行保存 >>> db.session.commit() # 事务提交
  8. 删除数据

    >>> u = User.query.get(1) # 查询 id 为 1 的用户对象 >>> db.session.delete(u) # 进行删除 >>> db.session.commit() # 事务提交

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计1879字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中