7. 给Lamb配置flask-sqlalchemy

邻居的尾巴 · · 922 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

由于之前已经有一篇介绍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页面
下一篇: 暂无
github地址: https://github.com/wuranxu/Lamb


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:邻居的尾巴

查看原文:7. 给Lamb配置flask-sqlalchemy

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

922 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传