美文网首页
7. 给Lamb配置flask-sqlalchemy

7. 给Lamb配置flask-sqlalchemy

作者: 米洛丶 | 来源:发表于2018-11-04 21:54 被阅读0次

    前言

    由于之前已经有一篇介绍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连接信息
      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工程就差不多完成了。下面我们来写第一个接口,感受一下吧。

    上一篇: 使用antd pro构建web页面
    下一篇: 为Lamb编写用户登录接口(带token)
    github地址: https://github.com/wuranxu/Lamb

    相关文章

      网友评论

          本文标题:7. 给Lamb配置flask-sqlalchemy

          本文链接:https://www.haomeiwen.com/subject/rkvdxqtx.html