Web程序开发中最重要的莫过于关系型数据库,即SQL 数据库,另外文档数据库(如 mongodb)、键值对数据库(如 redis)慢慢变得流行.
原因 : 我们不直接使用这些数据库引擎提供的 Python 包,而是使用对象关系映射(Object-Relational Mapper, ORM)框架,是因为它将低层的数据库操作指令抽象成高层的面向对象操作。也就是说,如果我们直接使用数据库引擎,我们就要写 SQL 操作语句,但是,如果我们使用了 ORM 框架,我们对诸如表、文档此类的数据库实体就可以简化成对 Python 对象的操作。
(1) Flask - SQLAlchemy
Flask使用的ORM框架为 SQLAlchemy,数据库采用了URL指定,下面我们列举几种数据库引擎:
数据库引擎
URL指定
MySQL
mysql://username:password@hostname/database
Postgres
postgresql://username:password@hostname/database
SQLite (Unix)
sqlite:absolute/path/to/database
SQLite (Windows)
sqlite:///c:/absolute/path/to/database
注意:
username 和 password 表示登录数据库的用户名和密码
hostname 表示 SQL 服务所在的主机,可以是本地主机(localhost)也可以是远程服务器
database 表示要使用的数据库 , SQLite 数据库不需要使用服务器,它使用硬盘上的文件名作为 database
ORM使用的优点:
增加少sql的重复使用率
使表更加的可读性
可移植性
(2) SQLAlchemy操作sql原生
安装操作数据库的模块
pip3 install pymysql
安装 flask-sqlalchemy
sudo pip3 install flask-sqlalchemy
配置路径
DB_URI = ‘mysql+pymysql://root:password@host:port/database’
下面先看下sqlalchemy操作的写法:
from sqlalchemy import create_engine
HOST = '127.0.0.1'
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'demo' #数据库名
PORT = 3306
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOST,PORT,DATABASE)
#创建引擎
engine = create_engine(DB_URI)
with engine.connect() as db:
data = db.execute('select * from user') #从user表中获取全部数据
db.execute('delete from user where id=1') #删除id=1的数据
(3) 设计数据表
1 字段类型
类型名
python中的类型
说明
Integer
int
存储整形 32位
SmallInteger
i