分享
  1. 首页
  2. 文章

7. 给Lamb配置flask-sqlalchemy

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

前言

由于之前已经有一篇介绍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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏