sql >> データベース >  >> RDS >> Mysql

SqlAlchemyは、テーブルオブジェクトをクエリするとすべての行を返しませんが、テーブルオブジェクトの列をクエリするとすべての行を返します

    SQLAlchemyクエリオブジェクトの.all()という同様の状況に遭遇しました。 テーブル内のすべての行を返すわけではありません(常に一部が欠落しています)が、.count() 呼び出しは正しいカウントを与えます。もう少し掘り下げてみると、モデル宣言がそのデータベースの実際のテーブルスキーマから逸脱していることに気付きました。まず、データベースにはスキーマ内に単一の主キー列がありますが、モデル宣言には構成主キーがあります(逆の場合はあなたのように)。また、テーブルスキーマにある3列の一意性制約を見逃しました。

    >

    私の場合、SQL Alchemyがデータベースにクエリを実行すると、すべての行がバックグラウンドで取得されましたが、モデル宣言の構成主キーが正しくないため、SQLAlchemyのセッションに一部の行が読み込まれませんでした(定義上、主キーは一意に識別されます)オブジェクトと、結果としてセッションで同じ主キーを持つ2つのオブジェクトをロードしないため、データベース内でも同じ値を持つ構成列を破棄します。PKが異なります。)

    結論として、データベーススキーマを使用してモデル宣言を再確認し、それらが同期していることを確認することが、この種の問題からの最初の応答です。



    1. 修正:MariaDBの「information_schemaの不明なテーブル「ロケール」」

    2. SQLServerでの照合

    3. MySQLの更新に(あまりにも)長い時間がかかる

    4. MySQL INSERT IF(カスタムifステートメント)