-
简介
因为 SQLAlchemy 是一个常用的数据库抽象层,并且需要一定的配置才能使用,因此 我们为你做了一个处理 SQLAlchemy 的扩展(Flask-SQLAlchemy 扩展)
-
配置键
Flask-SQLAlchemy 从您的 Flask 主配置中加载这些值。
Flask-SQLAlchemy 扩展能够识别的配置键的清单
# 扩展库文件 exts.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# flask项目的主配置文件configs.py
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask1'
USERNAME = 'root'
PASSWORD = '123456'
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=USERNAME,password=PASSWORD, host=HOST,port=PORT, db=DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
# 数据库配置后需要和app绑定 app.py
from flask import Flask
import configs
from exts import db
app = Flask(__name__)
# 加载配置文件
app.config.from_object(configs)
# db绑定app
db.init_app(app)
-
声明模板
*通常下,Flask-SQLAlchemy 的行为就像一个来自 declarative
扩展配置正确的 declarative 基类。因此,我们强烈建议您阅读 SQLAlchemy 文档以获取一个全面的参考。尽管如此,我们这里还是给出了最常用的示例。
需要牢记的事情:
- 您的所有模型的基类叫做 <cite>db.Model</cite>。它存储在您必须创建的 SQLAlchemy 实例上。 细节请参阅 快速入门。
- 有一些部分在 SQLAlchemy 上是必选的,但是在 Flask-SQLAlchemy 上是可选的。 比如表名是自动地为您设置好的,除非您想要覆盖它。它是从转成小写的类名派生出来的,即 “CamelCase” 转换为 “camel_case”。*
class User(db.Model):
# 如果类名不是数据库表名派生出来的,我们要添加对应表名
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
-
创建初始化数据库
# 只需要从交互式 Python shell 中导入 db 对象
>>> from yourapplication import db
>>> db.create_all()
# 简单的添加数据
>>> from yourapplication import User
>>> admin = User('admin', 'admin@example.com')
>>> guest = User('guest', 'guest@example.com')
>>> db.session.add(admin)
>>> db.session.add(guest)
>>> db.session.commit()
-####后续
flask-sqlalchemy的增删改查
更多知识查看flask-sqlalchemy官方文档