模型的基本使用

2022-09-14 18:42:01 浏览数 (1)

一、安装扩展库

  1. 安装pymysql扩展库
代码语言:javascript复制
pip install pymysql
  1. 安装flask-sqlalchemy扩展库
代码语言:javascript复制
pip  install  flask-sqlalchemy

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

二、代码配置

在manage.py中添加如下代码

代码语言:javascript复制
<span class="hljs-keyword">from</span> flask <span class="hljs-keyword">import</span> Flask  <span class="hljs-comment"># 导入Flask类</span>
<span class="hljs-comment"># 导入ORM转换库</span>
<span class="hljs-keyword">from</span> flask_sqlalchemy <span class="hljs-keyword">import</span> SQLAlchemy

app = Flask(__name__)  <span class="hljs-comment"># 进行实例化</span>
<span class="hljs-comment"># 配置数据库</span>
<span class="hljs-comment"># 设置链接数据库的URI  mysql pymysql://数据库用户名:密码@ip:端口/数据库名</span>
app.config[<span class="hljs-string">"SQLALCHEMY_DATABASE_URI"</span>] = <span class="hljs-string">"mysql pymysql://lucky:123456@127.0.0.1:3306/lucky"</span>
<span class="hljs-comment"># 进制对象的修改追踪</span>
app.config[<span class="hljs-string">"SQLALCHEMY_TRACK_MODIFICATIONS"</span>] = <span class="hljs-keyword">False</span>

<span class="hljs-comment"># 创建数据库对象</span>
db = SQLAlchemy(app)

三、表分析

需求: 创建用户表

  1. 一个用户表所需字段 用户名 密码 性别 年龄 是否删除
  2. 创建模型代码位置 manage.py (当前阶段为manage.py)
  3. 模型、属性、表之间的关联 一个模型类 对应数据库中的一张表 一个类属性 对应 表中的一个字段
  4. 创建用户表模型
代码语言:javascript复制
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span><span class="hljs-params">(db.Model)</span>:</span>
    __tablename__ = <span class="hljs-string">"user"</span>  <span class="hljs-comment"># 指定表名</span>
    id = db.Column(db.Integer, primary_key=<span class="hljs-keyword">True</span>)  <span class="hljs-comment"># 设置主键</span>
    username = db.Column(db.String(<span class="hljs-number">12</span>))  <span class="hljs-comment"># 用户名  最大长度12</span>
    password = db.Column(db.String(<span class="hljs-number">64</span>))   <span class="hljs-comment"># 用户密码 最大长度 64</span>
    sex = db.Column(db.Boolean, default=<span class="hljs-keyword">True</span>)  <span class="hljs-comment"># 性别 默认为True</span>
    age = db.Column(db.Integer, default=<span class="hljs-number">18</span>)  <span class="hljs-comment"># 年龄 默认20岁</span>
    isDelete = db.Column(db.Boolean, default=<span class="hljs-keyword">False</span>)  <span class="hljs-comment"># 是否删除 默认不删除</span>

四、创建表

代码语言:javascript复制
<span class="hljs-meta">@app.route('/createtable/')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">create_table</span><span class="hljs-params">()</span>:</span>
    db.create_all()
    <span class="hljs-keyword">return</span> <span class="hljs-string">'创建表'</span>

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

五、删除表

代码语言:javascript复制
<span class="hljs-meta">@app.route('/droptable/')</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">drop_table</span><span class="hljs-params">()</span>:</span>
    db.drop_all()
    <span class="hljs-keyword">return</span> <span class="hljs-string">'删除表'</span>

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

六、测试数据库

安装 flask-script扩展库

什么是Flask-Script?

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

安装

代码语言:javascript复制
pip install flask-script

配置

代码语言:javascript复制
<span class="hljs-keyword">from</span> flask_script <span class="hljs-keyword">import</span> Manager

app = Flask(__name__)
<span class="hljs-comment"># Manager类将追踪所有的在命令行中调用的命令和处理过程的调用运行情况</span>
manager = Manager(app)

<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
    <span class="hljs-comment"># 将启动Manger实例接收命令行中的命令</span>
    manager.run()

进入到python shell进行测试

python manage.py shell

导入User模型类以及db对象

代码语言:javascript复制
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> manage <span class="hljs-keyword">import</span> User,db

添加数据

代码语言:javascript复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User()  <span class="hljs-comment"># 实例化User模型类</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username = <span class="hljs-string">'lucky'</span>  <span class="hljs-comment"># 添加用户名</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.password = <span class="hljs-number">123456</span>  <span class="hljs-comment"># 添加密码</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.sex = <span class="hljs-keyword">True</span>  <span class="hljs-comment"># 添加性别</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.age = <span class="hljs-number">18</span>  <span class="hljs-comment"># 添加年龄</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.add(u)  <span class="hljs-comment"># 进行保存</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.commit()  <span class="hljs-comment"># 事务提交</span>

查询数据

代码语言:javascript复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.query.get(<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u
&lt;User <span class="hljs-number">1</span>&gt;
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username
<span class="hljs-string">'lucky'</span>

修改数据

代码语言:javascript复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.query.get(<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>u.username = <span class="hljs-string">'帅气的lucky'</span>  <span class="hljs-comment"># 修改用户名为帅气的lucky</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.add(u)   <span class="hljs-comment"># 进行保存</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.commit()  <span class="hljs-comment"># 事务提交</span>

删除数据

代码语言:javascript复制
<span class="hljs-meta">&gt;&gt;&gt; </span>u = User.query.get(<span class="hljs-number">1</span>)  <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.delete(u)   <span class="hljs-comment"># 进行删除</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>db.session.commit()  <span class="hljs-comment"># 事务提交</span>

0 人点赞