上一章学会使用sqlAlchemy进行基本的增删改查,这一章,我们进一步了解其中用到的对象和函数。
image.png
依赖
小技巧:在pycharm中,可以用按住cmd点击变量名的方式,跳转到变量定义的地方。
-
Column
image.png
Column是sqlalchemy/sql/schema.py中定义的一个类,这个类的作用是表示表的一列。
再往下看,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
image.png
create_engine()是一个函数,用来创建一个engine实例的,位于sqlalchemy/engine/init.py中。
一看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。传送门
网友评论