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

模型的基本使用

236次阅读
没有评论

共计 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、短信等云产品特惠热卖中