7. 给Lamb配置flask-sqlalchemy

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 由于之前已经有一篇介绍flask_sqlalchemy的文章了,这里大体内容就不介绍了。由于在公司的golang项目里有在使用gorm,个人觉得实在是方便,已经从sql奴隶变成了sql大哥,CRUD简直是得心应手。所以这里还是废话不多说,直接采用flask_sqlalchemy。

前言


由于之前已经有一篇介绍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连接信息
  • 10.jpg
    image.png


可以看出以上包含了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工程就差不多完成了。下面我们来写第一个接口,感受一下吧。




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
缓存 安全 Unix
flask
【2月更文挑战第1天】 Flask是一个基于Python的轻量级Web框架,由Armin Ronacher开发,使用BSD授权协议发布。Flask被设计为易于扩展,简单明了,具有灵活性,同时也具有足够的功能性,能够用于构建中小型的Web应用程序。相比于其他Python Web框架,Flask更加灵活,不会对应用程序的结构或代码实现产生限制。
17 2
|
10月前
|
Python
【Flask实战】sqlalchemy和Flask-SQLAlchemy使用对比
【Flask实战】sqlalchemy和Flask-SQLAlchemy使用对比
|
5月前
|
存储 Unix 开发者
Flask
Flask是一个基于Python的轻量级Web框架,由Armin Ronacher开发,使用BSD授权协议发布。Flask被设计为易于扩展,简单明了,具有灵活性,同时也具有足够的功能性,能够用于构建中小型的Web应用程序。相比于Django等重量级框架,Flask更加轻量级,易于学习和使用。
44 8
|
11月前
|
API 数据库 数据库管理
flask+flask_sqlalchemy增删改查
flask+flask_sqlalchemy增删改查
|
12月前
|
Python
Flask配置
Flask配置
41 0
|
12月前
|
前端开发 数据安全/隐私保护 Python
Flask初识
Flask初识
74 0
|
存储 缓存 中间件
Flask——总结
(轻量级的框架,非常快速的就能把程序搭建起来)
131 0
|
Python
Python编程:Flask扩展Flask-WTF和Flask-SQLAlchemy应用实例
Python编程:Flask扩展Flask-WTF和Flask-SQLAlchemy应用实例
Python编程:Flask扩展Flask-WTF和Flask-SQLAlchemy应用实例
|
Python
Flask服务配置
Flask服务配置
93 0
|
SQL 关系型数据库 MySQL
Flask-SQLAlchemy 介绍及配置 | 学习笔记
快速学习 Flask-SQLAlchemy 介绍及配置
241 1