blog-python-app icon indicating copy to clipboard operation
blog-python-app copied to clipboard

create_engine函数中的两点疑问

Open ywxowen999 opened this issue 9 years ago • 2 comments

在这个函数中有两点疑问,希望得到雪峰老师的指导

`` for k, v in defaults.iteritems(): params[k] = kw.pop(k, v) # dict.pop(key, default_value) 如果用户未设定,则使用默认值。

params.update(kw)

#上面这段代码不是可以用下面这两句写吗。
params.update(defalults)
params.update(kw)

``

2、问题

`` engine = _Engine(lambda: mysql.connector.connect(**params)) 这里为什么要用lambda ? 本来这句不就是调用一次mysql.connector.connect方法吗。

``

ywxowen999 avatar May 31 '16 02:05 ywxowen999

我不是廖雪峰哈, 我说下我的理解。

  1. 可以那样写,这样更简单些。
  2. 应该_Engine实例化时 需要持有一个连接对象 而这个连接对象保存的是 调用数据库的方法, 所以是个函数, 当真真调用时 他才会执行。这就相当于 你真真使用连接时 才会调用, 你如果仅仅是声明 是不会获取 连接的。

yumaojun03 avatar May 31 '16 02:05 yumaojun03

engine = _Engine(lambda: mysql.connector.connect(**params)) 请问下这个_Engine是从mysql.connector 引用的吗,我看了下没有这个东东

handsomepan avatar Sep 03 '17 14:09 handsomepan