创建了一个 object, 以及把其加入到 session 里后, 查询 id 都是空, 但是执行了一次 query 之后 id 就有值了.
感觉这么处理很怪, 一个 query 语句居然会背地里对数据库做修改. 不太理解为什么要这样设计. 我觉得把修改数据库的动作放到session.add()里不是更好? query我默认就是不对数据库做修改的啊.
----------
解释一下下面的输出: User是一个类, 代表一张表, session是我创建的Session类的对象.
1. 创建一行数据(User的实例)
2. 调用session.add()加入到session
3. 查询: session.query(...).all()
------------------------
>>> user7 = User(name='test', fullname='test_full', password='nopwd')
>>>
user7.id>>> session.add(user7)
>>>
user7.id>>> session.query(User).all()
2017-01-20 16:37:00,557 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name, fullname, password) VALUES (?, ?, ?)
2017-01-20 16:37:00,557 INFO sqlalchemy.engine.base.Engine ('test', 'test_full', 'nopwd')
2017-01-20 16:37:00,557 INFO sqlalchemy.engine.base.Engine SELECT
users.id AS users_id,
users.name AS users_name, users.fullname AS users_fullname, users.password AS users_password
FROM users
2017-01-20 16:37:00,558 INFO sqlalchemy.engine.base.Engine ()
[...deleted...]
>>>
user7.id8
>>>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/335990
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.