問題タブ [flask-sqlalchemy]
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 - Flask-sqlalchemy で Postgres の Hstore カラムを使用するにはどうすればよいですか?
sqlalchemy が hstore 列と対話できるようにするこのコードhttps://gist.github.com/1859653を実装しようとしています。
その要旨のコメントで、psycopg2.extras.register_hstore を実行する必要性について言及されています。この関数を実行する必要があるのはいつですか? 私が行った場合:
「接続が多すぎます」というherokuエラー
psycopg2 の代わりに pghstore (http://pypi.python.org/pypi/pghstore) を使用することについても言及されていますが、設定方法は示されていません。
また、このアドオン コードで hstore インデックスの使用がサポートされているかどうかも疑問です。
python - SQLAlchemy Declarative に基づいて Python Flask システムを適切にテストする方法
Flask で書かれており、Declarative extension http://flask.pocoo.org/docs/patterns/sqlalchemy/で SQLAlchemy を使用する、私がしばらく取り組んできたプロジェクトがあります。最近、プロジェクトの単体テストを開始することにしましたが、私の人生では、それを機能させる方法を理解できないようです。
http://flask.pocoo.org/docs/testing/を見ましたが、うまくいかないようです。
さまざまな Web サイトのものを組み合わせてみましたが、正しく機能するものを見つけることができません。
残念ながら、私が得ることができる最高のものは、次のエラーを引き起こします。
これに関するヘルプは大歓迎です。誰かがこれまでにこれを経験したことがあり、それを機能させたことがあれば、いくつかの指針が欲しいです! 前もって感謝します。
sqlalchemy - SQLAlchemy if/not クエリ セッションが既にアタッチされている場合
高校サッカーのスコアを投稿する Web サイトからデータを取得し、それを Flask プロジェクトに入れています。私は Flask-SQLAlchemy を使用しており、ゲームが既に存在するかどうかを確認しようとしています。そうでない場合は、データベースに新しいゲームを作成します。存在する場合は、スコアを更新したいだけです(最後のインポート以降にスコアに修正があった場合に備えて)。私のコードは次のとおりです。
コードを実行すると、次のエラーが表示されます。
sqlalchemy.exc.InvalidRequestError: オブジェクト '' は既にセッション '1' にアタッチされています (これは '2' です)
これを行う正しい方法は何ですか?
python - SQLAlchemyサブクラス/継承の関係
SQLAlchemyでIDとサブクラスとの関係を設定する方法について混乱しています(たまたまFlask-SQLAlchemyを使用しています)。私の一般的な設計は、スーパークラスのピンをジオロケーションを持つもの(つまり、ユーザー、場所など)の高レベルの表現にすることです。
PinオブジェクトとGeolocationオブジェクトの間には1対1の関係があるため、Geolocationには、たとえば2人のユーザー(またはユーザーと場所)の場所が同時に含まれることはありません。次に、Pinをサブクラス化してUserクラスを作成します。Userオブジェクトには、名前、password_hash、saltが必要です。また、を介してユーザーのジオロケーションを検索できるようにする必要がありますuserObj.geolocation
。ただし、後でPinをサブクラス化するクラスPlaceを作成したいので、を介してPlaceのジオロケーションを検索できるようにする必要がありますplaceObj.geolocation
。ジオロケーションオブジェクトが与えられれば、私は使用できるはずですgeolocationObj.pin
ユーザー/場所などを検索します。ジオロケーションオブジェクトが対応する。user_id
私がスーパークラスのPinを導入した理由は、Geolocationテーブルにplace_id
列が必要なUserまたはPersonにGeolocationを関連付けるのではなく、PinオブジェクトとGeolocationオブジェクトの間に純粋な1対1の関係があることを確認するためでした。そのうちの1つは常にnullになります。
ジオロケーションを参照する親Pinクラスを介して、すべてのユーザーが自動的に.geolocation
プロパティを持つことを期待していましたが、SQLAlchemyはこれを行わないようです。User and Placeと潜在的に他のクラスにPinをサブクラス化し、それらの各クラスにPinを介したジオロケーションプロパティを持たせ、PinとGeolocationの間に1対1の関係を持たせるという目標を達成するために、サブクラス化関係を機能させるにはどうすればよいですか?
python - SQL Alchemy NULL ID キー
テーブルのモデルの id フィールドを次のように定義しました。
それに応じてデータベース(MySQL)テーブルを変更しましたが、モデルを作成してコミットしようとすると(SQLalchemy 0.7.8を使用しています)
このエラーが発生します
python - アプリを参照せずにブループリントモデルでFlask-SQLAlchemyを使用する
ブループリントを使用してFlaskで「モジュラーアプリケーション」を作成しようとしています。
ただし、モデルを作成するときに、db
Flask-SQLAlchemyによって提供されるオブジェクトを取得するためにアプリを参照する必要があるという問題が発生しています。複数のアプリでいくつかのブループリントを使用できるようにしたいので(Djangoアプリの使用方法と同様)、これは適切なソリューションではありません。*
- switcharooを実行し、ブループリントに
db
インスタンスを作成させることができます。インスタンスは、アプリが残りのブループリントと一緒にインポートします。ただし、モデルを作成したい他のブループリントは、アプリではなく、そのブループリントからインポートする必要があります。
したがって、私の質問は次のとおりです。
- 後で使用されているアプリを意識せずにブループリントにモデルを定義させ、複数のブループリントをまとめる方法はありますか?これは、ブループリントからアプリモジュール/パッケージをインポートする必要があることを意味します。
- 私は最初から間違っていますか?ブループリントは、アプリから独立して再配布可能であることを意図していませんか(àlaDjangoアプリ)?
- そうでない場合は、そのようなものを作成するためにどのパターンを使用する必要がありますか?フラスコ拡張?単純にそれを行うべきではありません-そして多分すべてのモデル/スキーマをRubyonRailsで一元化するのでしょうか?
編集
declarative_base()
:私は今これについて自分で考えていましたが、モデルを宣言するときに持っている必要があるため、これはFlaskよりもSQLAlchemyに関連している可能性があります。そして、それはとにかくどこかから来なければなりません!おそらく最善の解決策は、Ruby on Railsのように、プロジェクトのスキーマを1つの場所で定義し、それを分散させることです。宣言型SQLAlchemyクラス定義は、実際にはDjangoのmodels.pyよりもschema.rbに似ています。これにより、( alembicまたはsqlalchemy-migrateからの)移行も簡単に使用できるようになると思います。
例を提供するように求められたので、簡単なことをしましょう。データベースに保存されている単純な「静的」コンテンツである「フラットページ」を説明する青写真があるとします。ショートネーム(URL用)、タイトル、本文のみのテーブルを使用します。これはsimple_pages/__init__.py
:
次に、このブループリントに独自のモデルを定義させるとよいでしょう(これはsimple_page/models.py
):
この質問は以下に関連しています:
db
その他にもさまざまですが、すべての返信はアプリのインスタンスをインポートするか、その逆を行うことに依存しているようです。「大規模なアプリのハウツー」ウィキページでも、「アプリを設計図にインポートする」パターンが使用されています。
*公式ドキュメントには、ブループリントが「含まれている」アプリを気にせずにルート、ビュー、テンプレート、アセットを作成する方法が示されているため、ブループリントは通常、アプリ間で再利用できるはずです。ただし、このモジュール性は、独立したモデルがなければそれほど有用ではないようです。
ブループリントはアプリに複数回フックされる可能性があるため、ブループリントにモデルを含めるのは単に間違ったアプローチである可能性がありますか?
python - Python/SQLAlchemcy の「または」機能
「または」がそのままの動作をしている理由がわからないようです。私は SQLAlchemy を使用してWTForms.ext.sqlalchemy.QuerySelectField
おり、設定QuerySelectField
することもできますquery_factory
が、それがない場合はフィールドquery
メソッドにフォールバックする必要があります。
例えば
query_factory
次のように引数を設定することもできます。
次に、他の場所で次のようにフォームを使用します。
私が見ているのはMyObjects.query.all()
、空のリストを返す場合NoneType not callable
、QuerySelectField _get_object_list() メソッドのこの行で例外が発生することです。
基本的に、 の値に関係なく、self.query
に割り当てられていてもor
は呼び出します。self.query_factory()
None
だから、私の質問は、これは期待される動作or
ですか? 両方を評価し、最初の値がNone
. これは正しいです?
python - 子関係を条件としたsqlalchemyクエリ
私はsqlalchemyに次のモデルを持っています:
Magazines には雑誌の名前が、issues には各雑誌の号が格納されます。これらは週刊誌なので、 のdate
フィールドIssue
は発行日です。
特定の日付に発行されていないすべての雑誌を選択するクエリを作成しようとしています。それを行う最も簡単な方法は何ですか?
heroku - Heroku で alembic 移行を実行するにはどうすればよいですか?
Heroku でかなり単純な Flask + SQLAlchemy サイトを実行しようとしていますが、マイグレーションを実行して DB をセットアップする方法がわかりません。を実行するheroku run alembic upgrade head
と、次のエラーが表示されます。
私には、これは sqlite のものをロードしようとしていることを示しているように見えます (これは私が持っているデフォルトです) が、Heroku PostgreSQL 接続を使用できるようにするためにalembic.ini
、次のようにしています:env.py
はapp
Flask インスタンスです。Flask-SQLAlchemy を使用してアプリでの DB の使用を DRY し、Flask-Heroku を使用してすべての Flask 構成変数が Heroku 環境変数から適切にプルされていることを確認しています。