Flask开发(二十二)Flask访问数据库 数据的CRUD操作

内容纲要

本篇导读:

  • 数据的添加
  • 数据的查询
  • 数据的修改
  • 数据的删除

数据的添加

数据的增删改查等操作,必须确保数据库已经实现建立好,然后使用db.sesssion.add(对象名称),就可以实现数据的插入操作。

在工程中新建一个config.py文件,其内容如下:

USER_NAME = 'root'
PASSWORD = '104210'
HOST = '192.168.112.101'
PORT = '3306'
DATABASE = 'demo_02'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format\
    (USER_NAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI=DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS=False

app.py文件内容如下:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import config

app = Flask(__name__)
app.config.from_object(config)
db=SQLAlchemy(app)

class Book(db.Model):
    __tablename__='book'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title = db.Column(db.String(50),nullable=False)
    publishing_office = db.Column(db.String(100),nullable=False)
    price = db.Column(db.String(30),nullable=False)
    isbn = db.Column(db.String(50),nullable=False)
    storage = db.Column(db.DateTime,default=datetime.now())
with app.app_context():
    db.create_all()

@app.route('/add')
def add():
    book1 = Book(title='Python基础教程(第三版)',
                 publishing_office='人民邮电出版社',
                 price='54.50',isbn='9787115474889')
    book2 = Book(title='游戏编程快速上手 第4版',
                 publishing_office='人民邮电出版社',
                 price='68.30', isbn='9787302384496')
    book3 = Book(title='Java算法与数据结构',
                 publishing_office='清华大学出版社',
                 price='121.40', isbn='978730288269')
    db.session.add(book1)
    db.session.add(book2)
    db.session.add(book3)
    db.session.commit()
    return '添加数据成功!'

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

运行工程,访问add路径后,查询数据库:

查询数据

数据的查询必须使用query.filter()方法查找到相应的对象(记录),然后就可以输出该对象具有的属性。接下来实现查询语句:

@app.route('/select')
def select():
    result = Book.query.filter(Book.id == 1).first()
    print(result.title)
    result = Book.query.filter(Book.publishing_office == '人民邮电出版社').all()
    for book in result:
        print(book.title)
    return '查询数据成功!'

first()函数用来返回查询到结果中的第一条,all()函数用来返回所有查询结果。

运行效果如下:

数据修改

数据的查询必须使用query.filter()方法查找到相应的对象(记录),然后再对该对象的属性值进行修改。

@app.route('/edit')
def edit():
    book = Book.query.filter(Book.id == '1').first()
    book.price = '1688'
    db.session.commit()
    return '修改数据成功'

运行效果如下:

数据删除

数据的查询必须使用query.filter()方法查找到相应的对象(记录),然后使用db.session.delete(对象名)方法进行删除。

@app.route('/del')
def delete():
    book = Book.query.filter(Book.id == '2').first()
    db.session.delete(book)
    db.session.commit()
    return '删除数据成功!'

运行效果如下:

无数据,请在后台创建自定义歌单。
阅读剩余
THE END