博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask-SQlAIchemy管理数据库
阅读量:2445 次
发布时间:2019-05-10

本文共 2355 字,大约阅读时间需要 7 分钟。

Flask-SQlAIchemy管理数据库

配置

class flask.ext.sqlalchemy.SQLAlchemy(app=None, use_native_unicode=True, session_options=None, metadata=None, query_class=<class 'flask_sqlalchemy.BaseQuery'>, model_class=<class 'flask_sqlalchemy.Model'>)

这个类用于控制对一个或多个flask应用程序的SQLAlchemy集成。根据您初始化对象的方式,它可以立即使用,也可以根据需要附加到一个烧瓶应用程序中。

有两种使用模式非常相似。一个是将实例绑定到一个特定的flask应用程序:

第一种:

app = Flask(__name__)db = SQLAlchemy(app)

第二种:

db = SQLAlchemy()def create_app():    app = Flask(__name__)    db.init_app(app)    return app

两者的区别在于,在第一种情况下,createall()和dropall()方法都将一直工作,但在第二种情况下,flask.flask.app context()必须存在。

默认情况下,flask-sqlalchemy将应用一些特定于后台的设置来改善您的体验。在SQLAlchemy 0.6 SQLAlchemy中,将对库进行探测,以获得本地的unicode支持。如果它检测到unicode,它就会让库处理它,否则就会自行处理。有时,这种检测可能会失败,在这种情况下,您可能想要将使用nativeunicode(或sqlnatiynativeunicode配置密钥)设置为False。注意,配置键覆盖了传递给构造函数的值。

一旦创建,这个对象就包含 sqlalchemy 和 sqlalchemy.orm 中的所有函数和助手。此外它还提供一个名为 Model 的类,用于作为声明模型时的 delarative 基类:

from flask_sqlalchemy import SQLAlchemyfrom flask import Flaskapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] ='mysql://root:xxx@localhost/flask'#配置数据库app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=Trueapp.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=Truedb=SQLAlchemy(app)class  User(db.Model):    id = db.Column(db.Integer, primary_key=True)    name = db.Column(db.String(64), unique=True, index=True)    country = db.Column(db.String(64), unique=True, index=True)    def __init__(self,name):        self.name=name

为了创建初始数据库,只需要从交互式 Python shell 中导入 db 对象并且调用 SQLAlchemy.create_all() 方法来创建表和数据库:

>>> from yourapplication import db>>> db.create_all()

Boom, 您的数据库已经生成。现在来创建一些用户:

>>> 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()

访问数据库中的数据也是十分简单的:

>>> users = User.query.all()[
,
]>>> admin = User.query.filter_by(username='admin').first()

Flask-SQlAIchemy与普通的 SQLAlchemy 不同之处:

SQLAlchemy 允许您访问下面的东西:

sqlalchemy 和 sqlalchemy.orm 下所有的函数和类

一个叫做 session 的预配置范围的会话(session)

metadata 属性

engine 属性

SQLAlchemy.create_all() 和 SQLAlchemy.drop_all(),根据模型用来创建以及删除表格的方法

一个 Model 基类,即是一个已配置的声明(declarative)的基础(base)

Model 声明基类行为类似一个常规的 Python 类,不过有个 query 属性,可以用来查询模型 (Model 和 BaseQuery)

您必须提交会话,但是没有必要在每个请求后删除它(session),Flask-SQLAlchemy 会帮您完成删除操作。

转载地址:http://qtcqb.baihongyu.com/

你可能感兴趣的文章
函数隐式声明警告如何解决_如何解决C语言中的隐式声明库函数警告
查看>>
暂存区和版本库_如何创建网站的暂存版本
查看>>
raspberry pi_如何确保Raspberry Pi始终具有相同的IP地址
查看>>
你知道我有多么喜欢看书吗_我喜欢书
查看>>
redis列表_Redis列表
查看>>
phaser 设置全屏_设置项目以使用Phaser构建JavaScript游戏
查看>>
使用Redis集
查看>>
redis 哈希里存哈希_如何使用Redis哈希
查看>>
谷歌app使用的是什么字体_如何使用Google字体
查看>>
ppt表格重设链接_如何重设表格
查看>>
docker简介_Docker简介
查看>>
redis简介_Redis简介
查看>>
获得超能力_软件是超能力
查看>>
linux简介_Linux简介
查看>>
git .git目录提交_压扁Git提交
查看>>
在Docker Hub上共享Docker映像
查看>>
JavaScript super关键字
查看>>
redis 自增步数_Redis的第一步
查看>>
docker删除映像_Docker映像简介
查看>>
redis发布/订阅广播_Redis发布/订阅
查看>>