【发布时间】:2013-01-18 21:00:44
【问题描述】:
我有一个简单的玩家实体:
__tablename__ = 'player'
_id = Column('id', SmallInteger, primary_key=True)
_nickName = Column('nick_name', String)
def __init__(self, nickName):
self._nickName = nickName
@property
def id(self):
return self._id
@property
def nickName(self):
return self._nickName.decode(encoding='UTF-8')
@nickName.setter
def nickName(self, nickName):
self._nickName = nickName
当我这样做时:
players = session.query(Player).filter(Player.nickName=='foo')
我打印了players var 我得到了这个:
SELECT player.id AS player_id, player.nick_name AS player_nick_name
FROM player
WHERE false
显然,当我在会话查询的末尾添加.first() 时,结果是None。
我试过filter_by() 并得到相同的结果。
欢迎任何帮助。
【问题讨论】:
-
请问您为什么要创建属性而不是直接使用列?
-
如果确实需要使用属性,请查看
synonym、synonym_for和hybrid扩展名。 -
@Audrius 因为这是我发现的解决编码问题的最简单方法。如果您对此有想法,我会删除 getter/setter(我在 Windows 上)。编辑:Eevve 回答修复此问题
标签: python orm sqlalchemy