作为一个初学者,最近带着学习的目的用了一段时间,因为我本人水平比较菜,本文无意对 sqlalchemy 提出任何批评,只是描述一些我使用中遇到的问题。
我没有什么 orm 使用经验,因为我司涉及的业务往往是大连表复杂查询,感觉 orm 不能带来多大的节省脑力的优势。平常我们业务中使用数据库,脱离开增删改查之外,更多的脑细胞应该是耗费在数据库储存原理上,如何规划数据和优化性能本身,虽然这部分花费的时间应该是最少。我从未想到有一天自己能在增删改查上耗费这么多的精力。
SQLAlchemy 在我这个初学者看来有若干明显问题,其中主要的就是设计上的混乱。随着新版本更新后,sqlalchemy 的世界(按我的划分),应该有三种分类方法,他们分别是
这三者组合之下就形成了 8 种搭配。从同步的->原生的->1.0 风格的代码,到异步的->ORM 的->2.0 式的调用,不一而足。在学习过程中文档本身就没有避免这种混乱,而有任何问题搜寻网络资料的话就更不一而足了。由于这是一个跨时间很长的项目,历史资料往往不能起到帮助,有时甚至会起到误导作用。而且作为 2022 年的项目,自然要尽可能地保证设计风格统一,就算网上找来一段代码可以 work ,如果它来自于不同的设计思路,融合进项目真的是好主意吗?
根据我的观察,ORM 还是很有必要的东西,包括虚拟的连接层,实际上起到的是数据库本身的内存优化的作用。在需要频繁读写业务数据的时候除了降低程序员心智开销,另一方面也能实打实地提高负载能力。但是我真的想吐槽这两天在网上找到的混乱的资料,还有让人一眼读不懂的文档,以及迁移到异步只给了一篇寥寥的说明,让我完全无法 get 到它的设计精神,以至于很多问题不能通过直觉解决,而网上的资料又全部过期。。
另外还有就是我作为初学者对于 ORM 的数据同步真的很疑惑,按照它的设计我无法理解数据同步是在哪里发生的,什么时候显式地发生,什么时候又隐式地发生,我在多端同时操作时什么时候需要注意脏读脏写问题。。。
总之我无意批评 sqlalchemy ,我知道所有的问题都是因为我太菜了,人家肯定有解决方案。但是用的这几天感觉是真的头大。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.