問題タブ [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 - Python:Peeweeを使用したデータベースデータのダンプ
バックグラウンド
PythonとPeeweeで作成されたMySQLクエリの結果をデータベースの列ヘッダーを含むExcelファイルにダンプする方法を探しています。エクスポートされたコンテンツを、データベースの列とほぼ同じ順序で配置したいと思います。さらに、フィールドがわずかに異なる可能性のある複数の類似したデータベース間でこれを機能させる方法が必要です。明確にするために、1つのデータベースには「User、PasswordHash、DOB、[...]」を含むユーザーテーブルがあり、別のデータベースには「User、PasswordHash、Name、DOB、[...]」があります。
問題
私の主な問題は、列ヘッダーを順番に表示することです。これまでのすべての試みは、順序付けられていない結果をもたらしましたが、そのすべてはそれほどエレガントではありません。
第二に、これまでの私の方法論は、私が(個人的に)維持したくないコードをもたらしましたが、これは悪い兆候であることがわかっています。
これまでの作業
現在、Peeweeのpwiz.pyスクリプトを使用して、ターゲットデータベース内の既存の各データベーステーブルのモデルを生成し、すべての主キーと外部キーを入力しました。関係は設定されており、いくつかの簡単なテストでは、適切に関連付けられていることが示されました。
コード:次のようなものを使用して、列ヘッダーを取得することができました。
前述のように、これは順序付けられていません。また、このようにすると、私は次のようなことをしなければなりません。
それに応じてフィールドに動的にデータを入力します。
考えと考えられる解決策
配列に必要な順序を手動で書き出し、それを使用してデータをループし、データを入力します。これの長所は非常に厳格な/きめ細かい制御です。短所は、すべてのデータベースにこれを指定する必要があるということです。
(手動またはメソッドを介して)検出される可能性のあるすべてのフィールドに関連付けられた重み付き値を持つフィールドのハッシュを作成し、重みに従って「_meta.get_field_names()」を並べ替えるメソッドを記述します。これの短所は、あるDBではDOBの前に、別のDBではDOBの後に名前が表示されるなど、列が100%正しい順序になっていない可能性があることです。
私はそれをすべて間違っていると言ったり、これを行うためのまったく異なる方法を提案したりしてください、私はすべての耳です。私はPythonとPeewee(実際にはORM全般)に非常に慣れていません。私はPerlに戻って、DBIを介してデータベースクエリをほとんどまたはまったく面倒なく行うことができました。しかし、Excel用のライブラリは私に多くの問題を引き起こすので、これを私の知識を広げるための時間としてとらえたいと思います。
python - peewee 2に列挙型を持つテーブルのモデルを作成するにはどうすればよいですか?
peeweeの列挙型フィールドを持つテーブルを記述するためのモデルを作成しようとしています。
EnumFieldが2.0バージョンより前にpeewee.pyファイルから削除されているのを確認していますが、現在のドキュメントには、その実装方法の概要を示すものが見つかりません。私がCharFieldだけを使用できるかどうか誰かが知っていますか?
python - Peewee-クエリ['str'initem]
私はこれを間違った方法で行っていることを知っています-リスト内包表記なしで、peeweeのクエリを使用してこれを行うにはどうすればよいですか?検索語がobjectsパラメータの「中に」あるかどうかを確認するためのクエリを取得したいと思います。
python - Windows用ピーウィーインストーラー
Windowsマシンにpeeweeをインストールしようとしています。Windows用のインストーラーはありますか?またはWindowsのインストール手順?私はPython / peeweeが初めてで、何も見つからないようです。
python - データベースクエリ周辺のフローを制御するためのより良い方法
私のプログラムでは、非常に大きなテーブル(メモリストレージを超えています)を読み取り、テーブルから読み取っていくつかの作業を行うために次の構造を作成する必要があります。selectをイテレータスタイルに書き直すことは非常に可能ですが、それでも次のような基本構造があります。
私がやりたいのは、不格好な状態変数をあまり持ち運ばないものを用意することです。この混乱をクリーンアップする方法のアイデアはありますか?
参考までに-私もこれを試しましたが、これ以上気に入っているかどうかはわかりません。
python - ピーウィーが 'id' 列を mysql 選択クエリに含めるのはなぜですか?
mysql で peewee を使用する方法を学ぼうとしています。
既存のテーブルを持つ mysql サーバー上に既存のデータベースがあります。テーブルは現在空です (現在テスト中です)。
次のエラーが表示されます。
peewee が選択クエリに「id」列を追加するのはなぜですか? データベースに既に存在するテーブルに id 列がありません。私は単に既存のテーブルを操作したいだけで、データベースとやり取りするたびに peewee がテーブルを作成する必要はありません。ここが間違いだと思います。
テーブルが空であるため、クエリの結果は空になるはずですが、学習中なので、コードを試してみたかっただけです。私はあなたの助けに感謝します。
編集
Wooble と Francis からの有益な回答に基づいて、peewee や sqlalchemy のような別の ORM を使用することが理にかなっているのかどうか疑問に思うようになりました。MySQLdb を使用して Python で直接クエリを実行する代わりに、ORM を使用する利点は何ですか?
これは私がやろうとしていることです:
-さまざまな Web サーバーからデータを自動的にダウンロードします。ほとんどのデータは xls または csv 形式です。xlrd パッケージを使用して xls を csv に変換できます。
-mysql db テーブルに挿入/一括挿入する前に、リスト オブジェクト内のデータを解析/処理します。
-複雑なクエリを実行して、mysql から python にデータを適切な構造化データ (リストなど) にエクスポートし、mysql ではなく python で実行する方が簡単なさまざまな統計計算を行います。mysql で実行できることはすべてそこで実行されますが、python で複雑な回帰を実行する場合があります。
-クエリから取得したデータに対してさまざまなグラフィカル パッケージを実行します。これには、高度なグラフィカル パッケージである ggplot2 パッケージ (R プロジェクトから) の使用が含まれる場合があります。そこで、R/Python の統合をいくつか行います。
上記を考えると、ORM/Peewee/SQLAlchemy を学ぶためにハッキングに時間を費やすか、MySQLdb を使用して直接 mysql クエリに固執するのが最善ですか?
python - peewee:オブジェクトには属性_metaがありません
私はPython3.332ビットのWindowsで作業しています。peeweeをインストールしましたが、その機能のいくつかを試してみたいと思います。Peewee Quickstart(http://peewee.readthedocs.org/en/latest/peewee/quickstart.html)から始めました。
私のコードは次のようになります。
エラーが発生します:
peeweeのインストールに問題がありますか?この問題を解決するにはどうすればよいですか?
python - Python orm 日時の問題
日時フィールドを持つ非常に大きなデータベースに、Peewee データベース モデル Products があります。(inserted time greater than now()) で記事を選択したい場合、クエリが永久にハングします。
データベースのサイズ (10 GB より大きい) が原因なのか、クエリ スタイルが原因なのかはわかりません。
この datetime(2013, 04, 03, 14, 52, 50) または "2013-04-03 14:52:50" のような datetime を使用する必要がありますか?
python - peewee ORM を使用したコードの単体テスト用のカスタム sqlite データベース
peewee python ORM を使用して多対多のシナリオを実装しようとしていますが、単体テストが必要です。Peewee チュートリアルは素晴らしいですが、データベースがモジュール レベルで定義され、すべてのモデルがそれを使用していることを前提としています。私の状況は異なります: 明示的に実行するテストを含むソース コード ファイル (Python の観点からのモジュール) がありません。そのファイルからテストを収集して実行するノーズを使用しています。
テストでインスタンス化されたモデル (ノーズによって実行されている) にのみカスタム データベースを使用するにはどうすればよいですか? 私の目標は、テスト プロセスを高速化するために、テスト専用のメモリ内データベースを使用することです。