0

SQLAlchemyでは、以下に示すようにクエリにコンマを入れると、「文字列」が返されます。カンマを入れないと、タプルになります。なぜそうなのですか?ドキュメントで説明されている場所がどこにも表示されません

SQLAlchemy0.8の使用

以下のコードは文字列を返します:

def get_password(self, member_id):
    for password, in session.query(Member.__table__.c.password).filter(self.__table__.c.id == member_id): 
        return password

これはクラス'str'を返します: 'mypassword'

以下のコードはタプルを返しますが、

def get_password(self, member_id):
    for password in session.query(Member.__table__.c.password).filter(self.__table__.c.id == member_id): 
        return password

これはクラス'sqlalchemy.util._collections.KeyedTuple'を返します:('mypassword',)

4

1 に答える 1

5

これは、クエリが常にタプルを返すためですが、コンマはそのタプルの要素を変数に割り当てます。

>>> foo, bar = (1, 2)
>>> foo
1
>>> bar
2
>>> baz, = (3, )
>>> baz
3

また、これは for ループでも機能します。

>>> for a, b in [(1, 'x'), (2, 'y')]:
...     print a, "and b is", b
...
1 and b is x
2 and b is y

これを「タプルアンパッキング」と呼びます

于 2013-03-07T00:56:21.797 に答える