【发布时间】:2017-02-03 19:25:32
【问题描述】:
我有一个 SQLAlchemy ORM,它的 __str__() 函数打印一个键和值表。
以下代码将其提交到数据库并打印出来(为了清楚起见,属性名称已更改):
user.some_attribute = <Some integer>
session.add(user)
session.commit()
app.logger.debug("some_attribute is %s" % user.some_attribute)
app.logger.debug("Created a DB row:\n%s" % user)
这里的疯狂之处在于,第二个调试打印只有在第一个调试存在时才有效!
换句话说,如果两条调试线存在,我得到:
some_attribute is 5
+------------------------------------------+-------------------------------------------------+
| Field | Value |
+------------------------------------------+-------------------------------------------------+
| creation_time | 2016-09-26 15:25:45.630230 |
| description | Test Poly 835 |
| destination_truck_ids | ['A'] |
| future_event_series_id | None |
| id | 1017 |
...
但如果只有第二个存在,我会得到:
+-------+-------+
| Field | Value |
+-------+-------+
+-------+-------+
为什么 ORM 没有属性,除非它的特性之一被打印出来?
【问题讨论】:
-
你是如何让
__str__生成所有这些的?就我而言,str(user)是我一直期望的:<__main__.User object at 0x0000000003866FD0>。
标签: python session orm sqlalchemy