再看sqlAlchemy

上一章学会使用sqlAlchemy进行基本的增删改查,这一章,我们进一步了解其中用到的对象和函数。


image.png

依赖

小技巧:在pycharm中,可以用按住cmd点击变量名的方式,跳转到变量定义的地方。

  • Column
    Column是sqlalchemy/sql/schema.py中定义的一个类,这个类的作用是表示表的一列。

    image.png

    再往下看,init()函数中会有很长一段的注释,都是用来解释参数的。
    比如常用的,name,type,autoincrement,key,doc,primary_key等等。
    因为参数很多,所以在使用Column类进行初始化的时候,尽量使用关键字传值。

  • String
    位于sqlalchemy/sql/sqltypes.py中。


    image.png

    我们清楚的看到,String代表sql中的varchar。


    image.png

    程序中我们写的是String(20),我们使用了位置传值参数,length是第一个参数(不算self),相当于String(length=20)。
  • create_engine
    create_engine()是一个函数,用来创建一个engine实例的,位于sqlalchemy/engine/init.py中。

    image.png

    一看create_engine的函数定义就知道,肯定又是支持一大堆参数,当然,在函数文档中每个参数都有详细的解释。对于使用的话,知道如何配置字符串进行连接数据库就行了。

  • sessionmaker


    image.png

    看完文档,我们知道sessionmaker是一个工厂函数,用来专门创建session的。
    文档中还有例子,在全局作用域中使用Session = sessionmaker(autoflush=False),在局部作用域中使用sess = Session()。


    image.png

    我们用的就是这种方式,来将session与数据库的连接进行绑定。

然后通过断点调试的方式,我们可以看到如下图所示的页面。


image.png

DBSession就是sqlalchemy.orm.session.Session类的对象,**kw参数中的内容也一目了然。

  • declarative_base
    结合declarative_base()函数的文档和之前我们的程序来看,它的作用就是为了让我们的User类继承由declarative_base()生成的类,那么这就意味着这个类中定义了某种关系映射。


    image.png

    暂时只要知道,我们的模型类(User)必须继承它(Base)就行了。

  • 还有一个关键就是session。
    单独开一章来讲解session。传送门

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容