flask 实现mysql数据库的CRUD

2018-05-16  本文已影响0人  裴general

摘要

本章主要介绍flask怎么连接到mysql数据库和实现数据库的增删改查

一、连接mysql数据库

1. install模块

pip installl SQLAlchemy==1.2.7
pip install pymysql

2. 配置__init__.py

(1)导入

from flask_sqlalchemy import SQLAlchemy

(2)配置mysql

# 配置链接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost:3306/flask3'
  app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

(3)初始化

 SQLAlchemy(app=app)  # 初始化app

二、实现数据库的增删改查

1.配置表 models.py

小本本:db, 表名: __table__name

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Student(db.Model):
    s_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    s_name = db.Column(db.String(20), unique=True)
    s_age = db.Column(db.Integer, default=18)
    __table__name = 'student'

views.py中实现数据的操作

2. 创建表

@stu.route('/createtable/')
def create_db():
    db.create_all()
    return '创建成功'

3. 删除表

@stu.route('/dropstu/')
def drop_db():
    db.drop_all()
    return '删除成功'

4.增加数据

若想数据被提交到数据库,必须要用commit
使用的try-except函数实现如果没有创建成功回转的功能
mysql数据库具有事务性:原子性,一致性,隔离性,自由性

@stu.route('/createstu/')
def create_stu():
    stu = Student()
    stu.s_name = '小骨头%d' % random.randrange(1000)
    stu.s_age = '%d' % random.randrange(20)
    try:
        db.session.add(stu)
        db.session.commit()
        # 事务性: 原子性, 一致性, 隔离性, 自由性
        return '创建学生成功'
    except:
        db.session.rollback()

5.删除数据库

delete

@stu.route('/deletestu/')
def delete_stu():
    stu = Student.query.filter_by(s_id=5).first()
    db.session.delete(stu)
    db.session.commit()
    return redirect(url_for('stu.stu_all'))

6.修改数据库

2中方式,直接写和update方法
(1)直接

stu = Student.query.filter_by(s_id=5).first()
    stu.s_name= '大骨头'
    db.session.commit()

(2)update

Student.query.filter(Student.s_id == 5).update({'s_name': '英气逼人的小骨头'})
    db.session.commit()
    return redirect(url_for('stu.stu_all'))

7.查询数据库

查询也有3种,一种是原生sql语句, 一种是filter, 一种是fiter_by
(1)原生sql

sql = 'select * from student where s_name="小骨头224";'
    stus = db.session.execute(sql)

(2)filter
此方法filter里面的内容必须要 【表名+表属性 == 名字】

stus = Student.query.filter(Student.s_name=='小骨头16')

(3)filter_by

stus = Student.query.filter_by(s_name='小骨头98')
上一篇下一篇

猜你喜欢

热点阅读