美文网首页
再看sqlAlchemy

再看sqlAlchemy

作者: 转身丶即天涯 | 来源:发表于2018-02-22 15:36 被阅读48次

    上一章学会使用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。传送门

    相关文章

      网友评论

          本文标题:再看sqlAlchemy

          本文链接:https://www.haomeiwen.com/subject/ncfztftx.html