前言
由于之前已经有一篇介绍flask_sqlalchemy的文章了,这里大体内容就不介绍了。由于在公司的golang项目里有在使用gorm,个人觉得实在是方便,已经从sql奴隶变成了sql大哥,CRUD简直是得心应手。所以这里还是废话不多说,直接采用flask_sqlalchemy。
原文链接: 使用flask_sqlalchemy
上手
sqlalchemy的一个好处是,里面提供了方法,可以一键创建(更新)表,一起来看看吧。
-
必要条件
-
mysql服务已启动,具体可以去百度
-
并且你知道本地库的端口号以及用户名密码
-
-
准备条件
-
安装mysql-connector-python(mysql官方驱动)
cmd窗口执行
pip install mysql-connector-python
-
安装flask_sqlalchemy
cmd窗口执行
pip install flask-sqlalchemy
,如果本地同时存在Python2和3等版本,需要执行pip3 install flask-sqlalchemy
,因为本教程不一定兼容Python2。- 在Lamb/server/config.py配置mysql连接信息
可以看出以上包含了5个重点内容,mysql的地址,端口号,用户名,密码和库名。接下来的SQLALCHEMY_DATABASE_URI代表了sql的连接信息,flask_sqlalchemy会自动根据这个变量去获取db连接等。其中
mysql+mysqlconnector
,代表的是试用mysql连接的方式,大家都知道Python连接mysql有很多库比如pymysql,mysqldb等。这里就是一个说明。至于后面的警告大家可加可不加,如果被警告得太烦了可以这样解决。 -
SQLALCHEMY_DATABASE_URI = 'mysql+mysqlconnector://{}:{}@{}:{}/{}'.format(
MYSQL_USER, MYSQL_PWD, MYSQL_HOST, MYSQL_PORT, DBNAME)
-
在
Lamb/server/app/models/__init__.py
初始化db代码很简单,就是将app赋给SQLAlchemy从而生成一个db对象。
from flask_sqlalchemy import SQLAlchemy from .. import app db = SQLAlchemy(app)
-
在models目录建立用户表
因为目前,还不太了解用户表的具体需要字段。但是我们能大概设计一下这个表,首先需要的字段肯定有用户名,密码,用户id,邮箱,团队id,职位等。其他的信息比如enable(是否可用),create_time(创建时间)等信息暂时先不考虑了。后续可以随意添加。
那么User model我的大概设计如下:
__author__ = "Woody" ''' sqlalchemy映射 ''' from . import db class User(db.Model): id = db.Column(db.INT, primary_key=True) username = db.Column(db.String(99), unique=True) password = db.Column(db.String(99), unique=False) email = db.Column(db.String(99), unique=False) engineer = db.Column(db.String(99), unique=False) team_id = db.Column(db.INT) def __init__(self, username, password, email=None, engineer=None, id=None, team_id=None): self.id = id self.username = username self.password = password self.email = email self.engineer = engineer self.team_id = team_id def __repr__(self): return '<User %r>' % self.username
大致讲一下吧,大概就创建了以上几个字段。unique是字段是否唯一(可重复),primary key自然就是主键,db.String对应varchar,db.INT对应int,也就是说。现在我们要操作数据表,只需要对这个User类操作就行了,因为sqlalchemy会自动映射到对应库--对应表进行操作。(models也添加了team表,感兴趣可以去看看)
-
在引入models的地方初始化数据表
我们在
Lamb/server/controller/__init__.py
初始化所有表,因为controller层会涉及到数据的读写,所以势必会引入models的对象。(这里可能和传统mvc有点差别了,因为views层好像被我转到前端去了)from ..models.user import User from ..models.team import Team from ..models import db db.create_all()
这样我们的一个sqlalchemy工程就差不多完成了。下面我们来写第一个接口,感受一下吧。
上一篇: 使用antd pro构建web页面
下一篇: 为Lamb编写用户登录接口(带token)
github地址: https://github.com/wuranxu/Lamb
网友评论