私はSQLAlchemyでdistinctを使用しようとしていますが、動作していないようです。distinctを使用したSQLAlchemy
SELECT my_table.data AS my_table_data
FROM my_table
None 55
しかし、その代わりに、私はこの取得しています:私はこのような出力期待
これを実行する#-*- coding: utf-8 -*-
from sqlalchemy import create_engine,Column, Integer
from sqlalchemy.orm import sessionmaker,load_only
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///:memory:')
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
class my_class(Base):
__tablename__ = 'my_table'
id= Column(Integer, primary_key=True)
data= Column(Integer)
Base.metadata.create_all(engine)
for i in range(10):
p=my_class()
p.id=i
p.data=55
session.add(p)
session.commit()
s=session.query(my_class).distinct(my_class.data).options(load_only(my_class.data))
print (s)
for a in s.all():
print (a.id,a.data)
:私はあなたが私の問題を見ることができる少し例を用意し
SELECT DISTINCT my_table.id AS my_table_id, my_table.data AS my_table_data
FROM my_table
0 55
1 55
2 55
3 55
4 55
5 55
6 55
7 55
8 55
9 55
を
私は間違っていますか?
しかし、クラスが必要なので、後でJSONを取得できます。 –
あなたの質問を拡大して、あなたが実際に何をしているのか、言い換えると[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy -問題)。しかし、とにかく答えはまだ立っている:少なくとも "DISTINCT ON"クエリとORMエンティティの種類を持つことはできません。あなたはDISTINCTを使ってクエリをマップすることができますが、それは別のことです。最後に、ORMエンティティにはIDが必要です。 –
あなたは何か悪いことはしていません、あなたがやろうとしたことはORMで行うことはできません。 –