Contents

【sanic/tortoise-orm/mysql/python】搭建一个基于sanic/tortoise-orm/mysql的python web项目

搭建一个基于sanic/tortoise-orm/mysql的python web项目

缘起

笑笑要从0开始做一个python项目,自己有点兴趣就研究了一下sanic架构。

安装mysql

docker安装一个命令就可以了,坑就一个,最好外挂一下my.cnf到自己磁盘上,
顺便设置一下时区。不然后面数据库数据表的时间就默认UTC时间了。
正常搞个账号,设置一下权限就可以放那里不管了。

安装sanic/tortoise-orm

因为是mysql,用的是asyncmy,官方这么写的,自己就按要求写。

pip install sanic sanic-ext
pip install tortoise-orm[asyncmy]

编写api接口

https://sanic.dev官方写就可以了,里面碰到第一个坑是还是时区的问题。
因为影响数据库插入时候时间,所以在初始化tortoise的时候特别注意要设置一下。

TORTOISE_ORM = {
  "connections": {"default": SQLALCHEMY_DATABASE_URL},
  "apps": {
      "models": {
          "models": ["app.models.model"],
          "default_connection": "default",
      },
  },
  "use_tz": False,
  "timezone": "Asia/Shanghai"
}

注意这里timezone是UTC的时候可以写UTC,但是比如CST的时候不能直接写CST 会报错,必须写具体比如Asia/Shanghai 这种的格式!!!

不然后面fields.DatetimeField的时间就会差8小时。
第二个坑有点莫名,在安装依赖的时候tortoise-orm,在requirement中没有定义
tortoise,在model文件import的地方会莫名要你导入这个tortoise,然后如果你
真的导入了tortoise==0.1.1进来黄线警告没了,但是会莫名报错。
经过猜想这个东西应该是不需要的,遂都删除了后重新安装tortoise-orm就恢复了。
所以得出结论这个是一个猫腻,可以不用管那个警告。

产出

https://github.com/zorroforever/okane这个是自己练习的结果,刚实现了用户查询,用户创建,用户更新的逻辑。谁刚好要用这个东西可以一起探讨一下哈。