一、安装flask-sqlalchemy

pipenv install flask-sqlalchemy

补充下:

下边配置选项中用到数据库驱动,我用的是cymsql,所以需要下载cymysql数据库驱动

pipenv install cymysql

二、配置选项

在配置文件中,为链接mysql数据库做必须的配置

# 数据库连接配置,必须的,格式为(数据库+数据库驱动://数据库用户名:密码@数据库主机地址:端口号/数据库名称)
my_config={
"MYSQL":"mysql",
"CYMSQL":"cymysql",
"ACCOUNT":"root",
"PASSWORD":123456,
"ADDRESS":"localhost",
"PORT":3306,
"DATABASENAME":"test"
}
SQLALCHEMY_DATABASE_URI = "{MYSQL}+{CYMSQL}://{ACCOUNT}:{PASSWORD}@{ADDRESS}:{PORT}/{DATABASENAME}".format(**my_config)
SQLALCHEMY_TRACK_MODIFICATIONS = True #为True时,flask-sqlalchemy会跟踪对象的修改

选项

说明

SQLALCHEMY_DATABASE_URI

用于连接的数据库 URI 。例如  mysql+cymysql://root:123@localhost:3306/test

SQLALCHEMY_TRACK_MODIFICATIONS = True

为True时,flask-sqlalchemy会跟踪对象的修改

 

 

三、初始化

from flask import Flask
from flask_sqlalchemy import SQLAlchemy # 引入SQLAlchemy类
app = Flask(__name__)
app.config.from_object('setting.my_config') # 引入数据库连接配置(我的是在setting文件夹下的my_comfig配置文件中)

db = SQLAlchemy(app) #实例化 SQLAlchemy,创建一个数据库实例,为下边模型提供一个基类,以及一些辅助类、辅助函数,可用于定义模型的结构

 

四、创建模型

# db.Model 创建模型
# db.Column 创建模型属性

class Book(db.Model): # 让Book 继承基类的模型
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(20),nullable=False)
userpassword = db.Column(db.String(20),nullable=False)

# Integer 整数类型
# primary_key 是否为主键
# autoincrement 是否递增
# String 字符串类型
# nullable 是否允许为空

 

常见的一些模型属性类型:

类型名

Python类型

说明

Integer

int

普通整数,一般是 32 位

SmallInteger

int

取值范围小的整数,一般是 16 位

Big Integer

int 或 long

不限制精度的整数

Float

float

浮点数

Numeric

decimal.Decimal

定点数

String

str

变长字符串

Text

str

变长字符串,对较长或不限长度的字符串做了优化

Unicode

unicode

变长 Unicode 字符串

Unicode Text

unicode

变长 Unicode 字符串,对较长或不限长度的字符串做了优化

Boolean

bool

布尔值

Date

datetime.date

日期

Time

datetime.time

时间

DateTime

datetime.datetime

日期和时间

Interval

datetime.timedelta

时间间隔

Enum

str

一组字符串

PickleType

任何 Python 对象

自动使用 Pickle 序列化

LargeBinary

str

二进制文件

 

常见的SQLAlchemy列(Column)中的选项:

选项名

说明

primary_key

如果设为 True,这列就是表的主键( 通常我们会把id定义为主键,并且是autoincrement=True递增模式 )

unique

如果设为 True,这列不允许出现重复的值

index

如果设为 True,为这列创建索引,提升查询效率

nullable

如果设为 True,这列允许使用空值;如果设为 False,这列不允许使用空值

default


为这列定义默认值


autoincrement

如果设为 True,表示递增模式

 

五、把创建的模型映射到数据库中去

# 把创建的模型映射到执行数据库中去,这样就ok了,此刻,
# 刷新数据库,会看到上边的数据表已经成功映射到mysql数据库中了!!!
db.create_all(app=app)

 

六、下边是一个完整的是例子

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('setting.my_config')

db = SQLAlchemy(app)

class Book(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(20),nullable=False)
userpassword = db.Column(db.String(20),nullable=False)
db.create_all(app=app)
# 配置文件 setting/my_comfig.py

DEBUG=True

my_config={
"MYSQL":"mysql",
"CYMSQL":"cymysql",
"ACCOUNT":"root",
"PASSWORD":123456,
"ADDRESS":"localhost",
"PORT":3306,
"DATABASENAME":"test"
}

SQLALCHEMY_DATABASE_URI = "{MYSQL}+{CYMSQL}://{ACCOUNT}:{PASSWORD}@{ADDRESS}:{PORT}/{DATABASENAME}".format(**my_config)
SQLALCHEMY_TRACK_MODIFICATIONS = True

 

我在补充下:

最近最项目,使用flask-sqlalchemy创建数据库表的时候老是创建失败,总结主要两点原因:

1、在Navicat中,连接Mysql数据库时要指定一个连接名,连接成功之后,在名字中右键新建一个数据库,这个数据库的名字要跟配置文件中的名字对应!!!

使用flask-sqlalchemy操作mysql数据库_flask   使用flask-sqlalchemy操作mysql数据库_sqlalchemy_02

2、配置文件一定要放在  db.create_all(app=app)  之前!!!

 

下边本想继续记录操作数据库的一些方法,但是文章有点长,下一篇文章详细记录下 数据库的增删改查。。。