Flask-SQLAlchemy -- 数据库学习报告

Flask-SQLAlchemy – 数据库学习报告

实验环境

Ubuntu 16.04 LTS
Anaconda 5.1
python 3.6

什么是Flask

Flask是一个使用Python开发的“微型”Web框架,其“微型”的目的在于,保持一个“简单”并且“可扩展”的框架核心,为开发者提供一个选择自由的Web框架。基于此,开发者可以自由的选择数据库或模板引擎,为自己的Web应用做合适的选择。

什么是SQLAlchemy

SQLAlchemy是一个ORM(对象关系映射)。基于对目标数据库的原生SQL的抽象,它提供了与一长串数据库引擎的一致的API,其中包括MySQL,PostgreSQL,和SQLite。使得在你的模型和数据库间交换数据时,带来了便利,同时也简化了诸如换掉数据库引擎和迁移数据库模式等其他事情。

什么是Flask-SQLAlchemy

Flask-SQLAlchemy是一个Flask插件,使得在Flask中使用SQLAlchemy更为方便。它为SQLAlchemy设置了许多合理的配置,同时内置了一些session管理,这样就不用在应用代码里处理这种基础事务了。

安装 Flask-SQLAlchemy

pip install flask-sqlalchemy

数据库管理

1 配置数据库

首先初始化并配置Flask应用,然后用它来初始化SQLAlchemy数据库处理程序。为数据库配置使用一个instance文件夹,所以应该在初始化应用时加上instance_relative_config选项,然后调用app.config.from_pyfile

# myapp/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__, instance_relative_config=True)

app.config.from_object('config')
app.config.from_pyfile('config.py')

db = SQLAlchemy(app)

2 定义模型

ColumnIntegerStringModel和其他的SQLAlchemy类都可以通过由Flask-SQLAlchemy构造的db对象访问。例如,定义一个储存用户信息的模型。每个用户有一个ID和一个用户名。

# myapp/models.py
from . import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(80), unique=True)

    def __init__(self, username):
        self.username = username

    def __repr__(self):
        return '<User %r>' % self.username

3 数据库基本操作

  • 创建表

    from . import db
    db.create_all()
  • 删除表

    db.drop_all()
  • 创建行

    
    # create object
    
    user_Bob = User(username='Bob')
    
    # add object to session
    
    db.session.add(user_Bob)
    
    # commit session to insert object into database
    
    db.session.commit()
  • 删除行

    db.session.delete(user_Bob)
    session.commit()
  • 修改行

    user_Bob.username = 'Bobb'
    db.session.add(user_Bob)
    session.commit()
  • 查询行

    Bob = User.query.filter_by(username='Bob')

参考文献

  1. Flask之旅
  2. Flask-SQLAlchemy 快速入门
  3. flask文档学习笔记1-快速入门
阅读更多
上一篇系统分析与设计 — Homework 2
下一篇系统分析与设计 — Homework 3
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭