問題タブ [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.

0 投票する
1 に答える
1407 参照

python - peewee: 多対多の関係から選択したクエリ結果をフィルター処理します

次のコードがあります

次の出力が生成されます。

これは基本的にpeewee docsの例です

結果をフィルタリングして、特定のサブセットからすべてのコースを受講している学生のみを選択する必要があります。

IN演算子を使用して、選択クエリを次のように変更しようとしました。

しかし、それは間違った結果をもたらします。つまり、私が間違っていることを意味します:

ここには 2 つの間違いがあります。

  1. Student2course3が印刷されていません。必要です。これは、course3コースリストにないためだと思います。
  2. Student4は選択されますが、選択されるべきではありません。 Student4にはcourse1course2の両方が含まれていないにもかかわらず、course1コースリストに含まれているためです。

たった 1 つのクエリで目的を達成することは可能ですか、それとも学生を反復処理し、それぞれに対してSELECTクエリを作成し、コースのリストをコースフィルターと照合する必要がありますか?

私の目標は、この出力を取得することです:

0 投票する
2 に答える
2931 参照

python - Peewee で .where(somecolumn == None/Null/Empty) を実行するには?

Flask アプリケーションで peewee を使用しており、テーブルに 1 つの列があり、null になる可能性があります。

somecolumn が null/None/Empty でないすべてのレコードを選択したいと考えています。私は次のようにしてこれをやろうとしました:

残念ながら、どちらも機能しません。どうすればこれができるか知っている人はいますか?すべてのヒントは大歓迎です!

0 投票する
1 に答える
7311 参照

python - peewee/mysqldb を使用して Python 経由で MySQL データベースにクエリを実行する方法は?

App.net 用の iOS クライアントを作成しており、プッシュ通知サーバーをセットアップしようとしています。現在、私のアプリは、ユーザーの App.net アカウント ID (数字の文字列) と APNS デバイス トークンをサーバー上の MySQL データベースに追加できます。このデータを削除することもできます。これらの 2 つのチュートリアルのコードを適応させました。

さらに、このすばらしい 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 を使用してデータベースにクエリを実行する方が簡単でしょうか? その場合、どうすればそれを行うことができますか?

0 投票する
1 に答える
410 参照

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 と一致する場合に新しいオプションを生成することです。 、しかし、各コースのすべてのアクティビティをループする必要があるため、これは非常に非効率的です.

この選択ボックスを生成する簡単で効率的な方法はありますか?

0 投票する
0 に答える
80 参照

sql - SQL のどの行にも一致がないかどうかを確認する

ここで、たとえば StuActIgnore.activity がこのクエリに 3 つの行を持っている場合、「通過」する各セッションは 3 回出力されます。各セッションをStuActIgnore.activity のすべての行と比較します。何が問題なのかはわかっています。私はそれを修正する方法がわかりません。

私はこのようなものが欲しい:

あれは; Activity.id がどのStuActIgnore 行とも一致しない場合、セッションがクエリに追加されます。ForeignKeyField は反復可能でないため、私が書いたコードは機能しません。

編集:次のように修正しようとしました:

この related_name ("ignoredactivities") は反復可能ですが、これも機能しないようです。

EDIT2: 別の for ループを追加して動作させました。動作しますが、効率的でもエレガントでもありません:

同じことを行うよりエレガントな方法はありますか?