一、安装扩展库
- 安装pymysql扩展库
pip install pymysql
- 安装flask-sqlalchemy扩展库
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)
三、表分析
需求: 创建用户表
- 一个用户表所需字段 用户名 密码 性别 年龄 是否删除
- 创建模型代码位置 manage.py (当前阶段为manage.py)
- 模型、属性、表之间的关联 一个模型类 对应数据库中的一张表 一个类属性 对应 表中的一个字段
- 创建用户表模型
<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">>>> </span><span class="hljs-keyword">from</span> manage <span class="hljs-keyword">import</span> User,db
添加数据
代码语言:javascript复制<span class="hljs-meta">>>> </span>u = User() <span class="hljs-comment"># 实例化User模型类</span>
<span class="hljs-meta">>>> </span>u.username = <span class="hljs-string">'lucky'</span> <span class="hljs-comment"># 添加用户名</span>
<span class="hljs-meta">>>> </span>u.password = <span class="hljs-number">123456</span> <span class="hljs-comment"># 添加密码</span>
<span class="hljs-meta">>>> </span>u.sex = <span class="hljs-keyword">True</span> <span class="hljs-comment"># 添加性别</span>
<span class="hljs-meta">>>> </span>u.age = <span class="hljs-number">18</span> <span class="hljs-comment"># 添加年龄</span>
<span class="hljs-meta">>>> </span>db.session.add(u) <span class="hljs-comment"># 进行保存</span>
<span class="hljs-meta">>>> </span>db.session.commit() <span class="hljs-comment"># 事务提交</span>
查询数据
代码语言:javascript复制<span class="hljs-meta">>>> </span>u = User.query.get(<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">>>> </span>u
<User <span class="hljs-number">1</span>>
<span class="hljs-meta">>>> </span>u.username
<span class="hljs-string">'lucky'</span>
修改数据
代码语言:javascript复制<span class="hljs-meta">>>> </span>u = User.query.get(<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">>>> </span>u.username = <span class="hljs-string">'帅气的lucky'</span> <span class="hljs-comment"># 修改用户名为帅气的lucky</span>
<span class="hljs-meta">>>> </span>db.session.add(u) <span class="hljs-comment"># 进行保存</span>
<span class="hljs-meta">>>> </span>db.session.commit() <span class="hljs-comment"># 事务提交</span>
删除数据
代码语言:javascript复制<span class="hljs-meta">>>> </span>u = User.query.get(<span class="hljs-number">1</span>) <span class="hljs-comment"># 查询id为1的用户对象</span>
<span class="hljs-meta">>>> </span>db.session.delete(u) <span class="hljs-comment"># 进行删除</span>
<span class="hljs-meta">>>> </span>db.session.commit() <span class="hljs-comment"># 事务提交</span>