我有一个简单的玩家实体:
__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
当我这样做的时候:
^{pr2}$我打印了players
变量,我得到了这个:
SELECT player.id AS player_id, player.nick_name AS player_nick_name
FROM player
WHERE false
显然,当我在会话查询的末尾添加.first()
时,结果是None
。
我尝试了filter_by()
并得到了相同的结果。在
欢迎任何帮助。在
在一般情况下,使用
@hybrid_property
将修复此问题,您根本不需要手动解码。只需将列类型设置为Unicode
,而不是String
,并且假设您的服务器运行良好,您应该正确地返回一个unicode
。在您也根本不需要
id
属性。在所以这门课你只需要:
(列名和
__init__
参数都可以自动生成。)如果您的数据库无法正确处理Unicode,那么,这是一个不同的问题,我们很乐意帮助您解决。:)
不能使用常规的} 代替:
@property
s作为查询参数。使用^{这使得
Player.nickName
(类的属性也是如此)在SQL表达式中非常有用。在相关问题 更多 >
编程相关推荐