問題タブ [peewee]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - peewee: 多対多の関係から選択したクエリ結果をフィルター処理します
次のコードがあります
次の出力が生成されます。
これは基本的にpeewee docsの例です
結果をフィルタリングして、特定のサブセットからすべてのコースを受講している学生のみを選択する必要があります。
IN演算子を使用して、選択クエリを次のように変更しようとしました。
しかし、それは間違った結果をもたらします。つまり、私が間違っていることを意味します:
ここには 2 つの間違いがあります。
- Student2のcourse3が印刷されていません。必要です。これは、course3がコースリストにないためだと思います。
- Student4は選択されますが、選択されるべきではありません。 Student4にはcourse1とcourse2の両方が含まれていないにもかかわらず、course1がコースリストに含まれているためです。
たった 1 つのクエリで目的を達成することは可能ですか、それとも学生を反復処理し、それぞれに対してSELECTクエリを作成し、コースのリストをコースフィルターと照合する必要がありますか?
私の目標は、この出力を取得することです:
python - Peewee で .where(somecolumn == None/Null/Empty) を実行するには?
Flask アプリケーションで peewee を使用しており、テーブルに 1 つの列があり、null になる可能性があります。
somecolumn が null/None/Empty でないすべてのレコードを選択したいと考えています。私は次のようにしてこれをやろうとしました:
残念ながら、どちらも機能しません。どうすればこれができるか知っている人はいますか?すべてのヒントは大歓迎です!
python - peewee/mysqldb を使用して Python 経由で MySQL データベースにクエリを実行する方法は?
App.net 用の iOS クライアントを作成しており、プッシュ通知サーバーをセットアップしようとしています。現在、私のアプリは、ユーザーの App.net アカウント ID (数字の文字列) と APNS デバイス トークンをサーバー上の MySQL データベースに追加できます。このデータを削除することもできます。これらの 2 つのチュートリアルのコードを適応させました。
- iOS アプリ用の単純な PHP/MySQL Web サービスを作成する方法 - raywenderlich.com
- iOS 6 チュートリアルの Apple プッシュ通知サービス: パート 1/2 - raywenderlich.com
さらに、このすばらしい python スクリプトを適応させて、App.net の App Stream API をリッスンしました。
私のMySQLの知識と同様に、私のPythonは恐ろしいものです。私がやろうとしているのは、通知する必要があるアカウントの APNS デバイス トークンにアクセスすることです。私のデータベース テーブルには、各エントリに 2 つのフィールド/列があり、1 つは user_id 用で、もう 1 つは device_token 用です。専門用語がよくわからないので、わかる方教えてください。
私はpeeweeを使用してデータベースから読み取ろうとしましたが、頭を悩ませています。これは、プレースホルダー付きのテスト スクリプトuser_id
です。
これにより、次のように出力されます。
コードがそれを明確にしなかった場合、データベースにuser_id
' 1234
' の行を照会しようとしており、同じ行の を変数に格納したいとdevice_token
考えています (これもおそらく間違った用語です)。後でスクリプトでプッシュ通知を送信するときに使用します。
device_token を正しく返すにはどうすればよいですか? また、peewee をやめて、単に python-mysqldb を使用してデータベースにクエリを実行する方が簡単でしょうか? その場合、どうすればそれを行うことができますか?
python - Peewee で optgroup を使用して select を生成する
Peewee ORMを使用したフラスコアプリケーションに次のモデルがあります。
各コースが optgroup であり、各アクティビティが Jinja の opgroup 内のオプションである複数選択フィールドを生成したいと考えています。
次のようなものがあるとします。
- コースⅠ
- 活動Ⅰ
- 活動Ⅱ
- 活動Ⅲ
- コースⅡ
- 活動Ⅳ
- 活動Ⅴ
つまり、アクティビティ I、II、および III の ForeignKeyField はコース I を指し、コース II の ForeignKeyField はアクティビティ IV および V を指します。
Flask アプリケーションに次のビューがあります。
私はこのようなものを取得したい:
これは、Jinja の optgroup 部分なしで簡単に取得できます。
しかし、optgroup で Course.name フィールドを取得する方法がわかりません。次に、ForeignKeyField を持つアクティビティが、この optgroup 内のオプションでこのコースを指しています。私が思いつく唯一の解決策は、すべてのコースを for ループで実行し、その for ループ内に別の for ループを作成して、すべてのアクティビティを実行し、 activity.Course.name フィールドが course.name と一致する場合に新しいオプションを生成することです。 、しかし、各コースのすべてのアクティビティをループする必要があるため、これは非常に非効率的です.
この選択ボックスを生成する簡単で効率的な方法はありますか?
sql - SQL のどの行にも一致がないかどうかを確認する
ここで、たとえば StuActIgnore.activity がこのクエリに 3 つの行を持っている場合、「通過」する各セッションは 3 回出力されます。各セッションをStuActIgnore.activity のすべての行と比較します。何が問題なのかはわかっています。私はそれを修正する方法がわかりません。
私はこのようなものが欲しい:
あれは; Activity.id がどのStuActIgnore 行とも一致しない場合、セッションがクエリに追加されます。ForeignKeyField は反復可能でないため、私が書いたコードは機能しません。
編集:次のように修正しようとしました:
この related_name ("ignoredactivities") は反復可能ですが、これも機能しないようです。
EDIT2: 別の for ループを追加して動作させました。動作しますが、効率的でもエレガントでもありません:
同じことを行うよりエレガントな方法はありますか?