Python day44_Flask入门

数据库

ORM

  • ORM 全拼Object-Relation Mapping.

  • 中文意为 对象-关系映射.

  • 主要实现模型对象到关系数据库数据的映射.

ORM图解

《Python day44_Flask入门》 10.jpg

优点 :

  • 只需要面向对象编程, 不需要面向数据库编写代码.
  • 对数据库的操作都转化成对类属性和方法的操作.
  • 不用编写各种数据库的sql语句.
  • 实现了数据模型与数据库的解耦, 屏蔽了不同数据库操作上的差异.
  • 不在关注用的是mysql、oracle…等.
  • 通过简单的配置就可以轻松更换数据库, 而不需要修改代码.

缺点 :

  • 相比较直接使用SQL语句操作数据库,有性能损失.
  • 根据对象的操作转换成SQL语句,根据查询的结果转化成对象, 在映射过程中有性能损失.

Flask-SQLAlchemy安装及设置

  • SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升

  • SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作。flask-sqlalchemy 是一个简化了 SQLAlchemy 操作的flask扩展。

  • 文档地址:http://docs.jinkan.org/docs/flask-sqlalchemy

安装

在创建的flask 虚拟环境中 比如:py3_plask 输入下面指令:

pip install flask-sqlalchemy

如果连接的是 mysql 数据库,需要安装 mysqldb:

pip install flask-mysqldb

数据库连接配置

在 Flask-SQLAlchemy 中,数据库使用URL指定,而且程序使用的数据库必须保存到Flask配置对象的 SQLALCHEMY_DATABASE_URI 键中。

配置如下

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1:3306/my_library'
# 动态追踪修改设置,如未设置只会提示警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
#查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)

配置好后,去mysql中创建配置中的数据库my_library

$ mysql -uroot -pmysql
$ create database mylibrary charset utf8;

其他配置,仅做了解

名字 备注

SQLALCHEMY_DATABASE_URI 用于连接的数据库 URI 。例如:sqlite:////tmp/test.dbmysql://username:password@server/db

SQLALCHEMY_BINDS 一个映射 binds 到连接 URI 的字典。更多 binds 的信息见用 Binds 操作多个数据库(http://docs.jinkan.org/docs/flask-sqlalchemy/binds.html#binds)。

SQLALCHEMY_ECHO 如果设置为Ture, SQLAlchemy 会记录所有 发给 stderr 的语句,这对调试有用。(打印sql语句)

SQLALCHEMY_RECORD_QUERIES 可以用于显式地禁用或启用查询记录。查询记录 在调试或测试模式自动启用。更多信息见get_debug_queries()。

SQLALCHEMY_NATIVE_UNICODE 可以用于显式禁用原生 unicode 支持。当使用 不合适的指定无编码的数据库默认值时,这对于 一些数据库适配器是必须的(比如 Ubuntu 上 某些版本的 PostgreSQL )。

SQLALCHEMY_POOL_SIZE 数据库连接池的大小。默认是引擎默认值(通常 是 5 )

SQLALCHEMY_POOL_TIMEOUT 设定连接池的连接超时时间。默认是 10 。

SQLALCHEMY_POOL_RECYCLE 多少秒后自动回收连接。这对 MySQL 是必要的, 它默认移除闲置多于 8 小时的连接。注意如果 使用了 MySQL , Flask-SQLALchemy 自动设定 这个值为 2 小时。

连接其他数据库

本整理数据主要用mysql数据库

完整连接 URI 列表请跳转到 SQLAlchemy 下面的文档 (Supported Databases) 。这里给出一些 常见的连接字符串:

  • Postgres:

    postgresql://scott:tiger@localhost/mydatabase

  • MySQL:

    mysql://scott:tiger@localhost/mydatabase

  • Oracle:

    oracle://scott:tiger@127.0.0.1:1521/sidname

  • SQLite (注意开头的四个斜线):

    sqlite:////absolute/path/to/foo.db

常用的SQLAlchemy字段类型

《Python day44_Flask入门》 11.JPG

常用的SQLAlchemy列选项

《Python day44_Flask入门》 12.JPG

常用的SQLAlchemy关系选项

《Python day44_Flask入门》 13.JPG

    原文作者:sixixi
    原文地址: https://www.jianshu.com/p/aefc47c330f7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞