重新捡起flask(七)

来到数据库一章了,进度很销魂的慢,中间其实还是忍不住玩了一下勇敢的心,整体画风十分强悍,本来录了视频的,没想到最后没保存下来,坑死了...

来到数据库一章,我的心还是很蒙的。

虽说自己之前sql写的666,但是你让我建模我还真没干过啊!

然后狗书里用的还是sqlalchemy,用面向对象来理解数据库,我选择godie,我知道为什么叫狗书了...
开玩笑啦。

不过说实话,是有些懵。

因为你在这个框架里呆的时间还很短,什么都不知道,你不知道这个框架为你做了什么,你就像一个瞎子一样,只能靠着狗书的引导。

但狗书毕竟是面向所有人,肯定有你不知道的问题。

而且坑爹的是,狗书既然把参数配置成false了...大家可以看一下5a...

现在在命令行测试数据库操作,竟然都没报错,只是sqlalchemy好心的给我提示了一大堆告警,我勇敢的选择了忽视.....

其实最难理解的还是下面这一段代码,定义的两张表的关系,和后面导致的数据库操作的一些命令的改变。

我还是贴一下出来,后续我们还是先分析一下2张表的关系吧。

class Role(db.Model):
    __tablename__ = "roles"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    users = db.relationship("User", backref="role")

    def __repr__(self):
        return "<Role %r>" % self.name

class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    role_id = db.Column(db.Integer, db.ForeignKey("roles.id"))

    def __repr__(self):
        return "<User %r>" % self.username

users表中的每条记录都会指定一个roles表里面的id字段。

为了操作,roles表里面加了一个虚拟的属性users,他其实不是一个数据库的字段,从她的relationship方法也可以知道。他的作用是当你新建一个users表中的记录时,可以直接这么用User(username="balabala",role=some_instance_of_Role).

其实就是这样。

狗书中还说到了一对多,和什么多对多的关系。

这个也很简单理解,我们来懵一下。

user对role是多对一的关系,为什么?

因为多个user都可以对应同一个role(不看书确认了,是否打脸了?)

其实关系很简单。

 

然后还要收到一些点就是,sqlalchemy'为我们自动管理的主键,会用整数自增,你看我们上面实例化user也知道,我们没有指定id的值,但不会报错。

另外,数据库操作和git一样,你要先add,再commit。

add支持多个,commit支不支持添加备注呢...add多个自然还出来了一个事务问题,这个狗书上说sqlalchemy会自动保证,还是很强悍的!

哦,还有一个很重要的是回滚,roll_back。

没用过,如果能和git一样,回滚到指定版本就强了,没试过,大家可以多去搜一下吧。

总之,数据库这一章概念较多,我们就是简单理一下。

 

转载于:https://www.cnblogs.com/onhacker/p/7895850.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值