[解決済み] SQLAlchemy で SQLite を使って個別の行を返す
2022-01-31 22:11:09
質問
SQLAlchemyの クエリ.distinct メソッドの動作に一貫性がありません。
>>> [tag.name for tag in session.query(Tag).all()]
[u'Male', u'Male', u'Ninja', u'Pirate']
>>> session.query(Tag).distinct(Tag.name).count()
4
>>> session.query(Tag.name).distinct().count()
3
つまり、2番目の形式は正しい結果を与えますが、1番目の形式はそうではありません。 この現象はSQLiteでは起こるようですが、Postgresでは起こりません。 クエリオブジェクトを渡す関数があります。
distinct
節が適用されるため、上記の2番目の方法ですべてを書き換えることは非常に困難です。 私が見逃している何か明白なものがありますか?
解決方法は?
ドキュメントによると
この場合、Postgresql の方言は DISTINCT ON をレンダリングします。 (>) 構文があります。
そのため、カラムの式を渡すと
distinct()
はPostgreSQLでのみ動作します(なぜなら、PostgreSQLには
DISTINCT ON
).
式中
session.query(Tag).distinct(Tag.name).count()
は無視されます。
Tag.name
で、クエリ(すべてのフィールドで区別される)を生成します。
SELECT DISTINCT tag.country_id AS tag_country_id, tag.name AS tag_name
FROM tag
おっしゃるとおり、あなたの場合
distinct(Tag.name)
が適用されるため、単なる
count()
を使用することを検討してください。
session.query(Tag).distinct(Tag.name).group_by(Tag.name).count()
お役に立てれば幸いです。
関連
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] SQLAlchemy ORDER BY DESCENDING?
-
[解決済み] SQLAlchemy: flush() と commit() の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
PicgoのイメージベッドツールをPythonで実装する
-
Python カメの描画コマンドとその例
-
Python jiabaライブラリの使用方法について説明
-
python implement mysql add delete check change サンプルコード
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac