Flask ~~“一见倾心之初体验”(Flask-SQLAlchemy的安装设置及数据库的基本使用操做----增~删~改~查)

通过几天的了解咱们以及对Flask有了初步的认识,在学习完表单后咱们来看看数据库,数据库想必都不陌生吧,可是在python中咱们能够用pymysql来连接,但在Flask中咱们如何来连接数据库呢?首先在链接数据库前先引入一个SQLAlchemy,我来介绍介绍。html

SQLALchemy 其实是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是经过 Python 对象来操做数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提高python

SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操做。flask-sqlalchemy 是一个简化了 SQLAlchemy 操做的flask扩展。mysql

下面来讲一个如何安装SQLAlchemy :sql


安装 flask-sqlalchemy:数据库

pip install flask-sqlalchemy编程

若是链接的是 mysql 数据库,须要安装 mysqldb:flask

pip install flask-mysqldbsession

数据库可想而知,确定离不开增~删~改~查,下边来简单介绍一下:oracle

上代码:app

# -*- encoding: utf-8 -*-

from flask import Flask,render_template
#导入第三方连接库aql点金数
from flask_sqlalchemy import SQLAlchemy

#创建对象

app=Flask(__name__)

#载入配置文件

app.config.from_pyfile('config.ini')

#指定数据库连接还有库名
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'

#指定配置,用来省略提交操做,也能够放在配置文件中更简单
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

#创建数据库对象
db = SQLAlchemy(app)

#创建数据库,用来映射数据库表,将数据库的模型做为参数传入
class User(db.Model):
    #声明代表
    __tablename__ = 'user'
    #创建字段函数
    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.String(200))
    password = db.Column(db.String(200))
                            

#数据库的查询操做(查)
@app.route('/select')
def select_user():
    #简单的全量查询
    #翻译为 select * from user
    # ulist = User.query.all()
    # for i in ulist:
    #     print(i.name)

    # #只取一条
    # #翻译为 select * from user limit 1
    # ulist = User.query.first()
    # print(ulist.name)



    #使用原生的sql语句(查)
    #翻译为 select * from user order by id desc limit 1,2
    item = db.session.execute('select * from user order by id desc limit 1,2')
    #将结果集强转为list
    item = list(item)
    print(item)


    #使用原生语句进行修改操做
    # db.session.execute('update user set password ="321000" where id = 6 ')
    #将动态数据传输给模板
    return render_template('sql.html',item=item)
   这里跳转的的网页又本身随意定义一个模块 #数据库的修改操做(改) @app.route('/edit') def edit_user(): #根据字段作修改操做 #翻译为 update user set name='张三' where id=4 User.query.filter_by(id = 4).update({'name':'张三'}) return '这里是修改' #数据库的删除操做(删) @app.route('/del') def del_user(): #根据某个字段作删除,filter_by 能够理解为where条件限定 #翻译为 delete from user where id=1 User.query.filter_by(id = 3).delete() User.query.filter_by() return '这里是删除操做' #数据库的入库操做(增) @app.route('/') def index(): #增,入库逻辑 #声明对象 user = User(name='隔壁老王',password='123123') #调用添加方法 db.session.add(user) #提交入库 # db.session.commit() return '这里是首页' if __name__ == "__main__": app.run()

上边代码中提到了return中返回的模板文件,实现动态的数据展现,简单代码以下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>动态数据展现</title>
    <style>
    table{
        background-color:blueviolet;
        border: solid 3px gold;
        padding: 10px;
        
    }

    </style>
</head>
<body>

    <table>
        {# 对数据进行p遍历输出 #}

        {% for i in item%}

            <tr>
                <td>{{i.id}}</td>
            </tr>

            <tr>
                <td>{{i.name}}</td>
            </tr>

            <tr>
                <td>{{i.password}}</td>
            </tr>

        {% endfor %}

    </table>


</body>
</html>

注:

以上就是flask链接数据库的增删改查

以上又两种数据库的增删改查,SQLAlchemy若是不习惯能够选择原生的代码

原生的格式为 :

item = db.session.execute('sql语句')
 

总结:

 
SQLAlchemy是一个基于Python实现的ORM框架。该框架创建在 DB API之上,使用关系对象映射进行数据库操做,简言之即是:将类和对象转换成SQL,而后使用数据API执行SQL并获取执行结果。
 

优势 :

只须要面向对象编程, 不须要面向数据库编写代码.
   对数据库的操做都转化成对类属性和方法的操做.
   不用编写各类数据库的sql语句.
实现了数据模型与数据库的解耦, 屏蔽了不一样数据库操做上的差别.
   不在关注用的是mysql、oracle...等.
   经过简单的配置就能够轻松更换数据库, 而不须要修改代码.

缺点 :

相比较直接使用SQL语句操做数据库,有性能损失.
根据对象的操做转换成SQL语句,根据查询的结果转化成对象, 在映射过程当中有性能损失。
相关文章
相关标签/搜索