这两项工作都是:
sel = select([self.tbl])
rec = self.engine.execute(sel)
和
sel = select([self.tbl])
conn = self.engine.connect()
rec = conn.execute(sel)
底层差异是什么?
答案 0 :(得分:0)
根据the docs:
connect()
可以直接使用引擎向数据库发出SQL。最通用的方法是首先获取连接资源,您可以通过Engine.connect()方法获得:
connection = engine.connect()
result = connection.execute("select username from users")
for row in result:
print("username:", row['username'])
connection.close()
连接是Connection的一个实例,它是一个代理对象 用于实际的DBAPI连接。从中检索DBAPI连接 连接池创建Connection时的连接池。
execute()
可以使用Engine本身的execute()方法以速记方式执行上述过程:
result = engine.execute("select username from users") for row in result:
print("username:", row['username'])
在上面,execute()方法获取一个新的Connection 拥有,执行声明 使用该对象,并返回ResultProxy。在这种情况下, ResultProxy包含一个称为close_with_result的特殊标志 表示当其底层DBAPI游标关闭时, 连接对象本身也是关闭的,它再次返回DBAPI 连接到连接池,释放事务资源。