Discuss / Python / 心急吃不了热sqlalchemy

心急吃不了热sqlalchemy

Topic source

以前常在网上看到大家黑正则表达式:

如果有一个问题,你想到可以用正则表达式来解决,那么现在你有两个问题了。

刚开始我是不信的,直到我遇见了sqlalchemy. 这个鬼故事我看可以升级成2.0版了.

如果有一个问题,你想到可以用ORM来解决,那么现在你有两个问题了。

和直接使用connect,cursor畅快操作数据库的方式比起来,sqlalchemy需要更长时间的前戏.没有一点点防备,成吨的declarative_base , sessionmaker ,create_engine 鬼东西砸在了小透明的脸上.

这些都是啥?有没有必要搞这么多东西出来,开发sqlalchemy的时候程序员拿的是计件工资吧,创造的函数数量肯定与他们的工资挂钩. 像create_enginesessionmaker我认了,这是orm们的标配,搞成这个样子也是迫不得已. 我真心感觉它俩可以攒成一个,主打SessionMaker,engine作为SessionMaker的一个参数传入.

declarative_base就更坑爹了. 动用declarative长达11位的单词,只为了临时现做一个Base给其他的Model当基类.

from sqlalchemy.ext.declarative import declarative_base #卧槽,这个导入这么长 ,鬼才记得住.
Base=declarative_base() #卧槽卧槽,现做Base你说浪不浪.
class Foo(Base):
   pass

这里该再拿出点诚意来.提前把Base放到sqlalchemy包的__init__.py里去初始化. 大家用Base的时候直接import进来.

__init__.py #藏在这里,我们不看它
Base=declarative_base()
from sqlalchemy import BASE #这样多么的清爽
class Foo(BASE):
   pass

谁要用定制BASE的时候,再去弄declarative_base()进来.

我理想中的sqlalchemy里只需要import进来一个SessionMaker,一个Base就可以工作了. SessionMaker一看就知道是做session的,做出来的session就当cursor那么用. Base标配不用设置,就是给模型当基类的.

另外,sqlalchemy的Tutorial写得也实在够呛 跟着教程做到定义Model那里,看见教程里忽然修改了一下字段的长度.我也学着修改了一下字段的长度,然后我就翻了车. Tutorial:怪我咯? 在这里提醒一下大家:sqlalchemy tutorial里背景为绿色的代码不要跟着抄.不要问我是怎么知道的.

看了几天sqlalchemy的tutorial .看完 building a relationship实在没动力继续下去了. sqlalchemy确实是一个强大的ORM框架,强大到80%的群众最多只会用到它20%的功能.

sqlalchemy Documentation 1.1版 pdf文档将近1600页,我掐头去尾看了不到40页. hibernate 3.6.10 reference pdf版总共不到400页.

那么到底sqlalchemy的文档作者是不是在报复社会呢? 我不禁陷入了深深的沉思中...

以前听人家说python简单好学,都是骗子.

那我要给你点个赞哦

哥们你真可爱 留个联系方式吧

建议你可以去看看Flask web开发这本书 这里面用到的sqlalchemy的很多功能只需要导入一个模块就行了 from flasksqlalchemy import SQLAlchemy from flask import Flask app=Flask(_name) db=SQLAlchemy(app) class User(db.Model): pass

db.session.add() db.session.commit() 等等等等等 只需要导入一个模块就行了。。

老哥留个联系方式一起学习交流,~!可爱的一批```

danjawwi1

#8 Created at ... [Delete] [Delete and Lock User]

什么? 这就开始约起来了吗,进展太快了。 不过我也感觉好像ORM简化的程度并没有我想象的那么大。 基本上和用sql也差不了太多。

哥们你真是枯燥学习中的一股清流呀

cherishdy

#10 Created at ... [Delete] [Delete and Lock User]

差点没笑喷


  • 1
  • 2

Reply