問題タブ [sqlsoup]
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.
many-to-many - 例外をスローする多対多リレーションの SqlSoup related()
次のコードを使用して、既存のデータベースで SqlSoup を使用しています。
ただし、最後のrelate()
呼び出しで例外がスローされます。
テーブルは、次の定義を使用して作成されています。
「本物の SQLAlchemy を使用できるのに、なぜ彼は SqlSoup を使用しているのですか?」と尋ねる場合: SQLAlchemy についての学期末レポートを書いていて、ある章で SqlSoup について言及しています。例を追加したいと思います。 . そして、SA の例で使用したデータベースを使用するよりも簡単なことは...
python - ループ内の SQL Alchemy でレコードを更新する方法
SQLSoup (SQLAlchemy エクステンション) を使用して、SQL Server 2008 データベースのレコードを更新しようとしています。接続には pyobdc を使用しています。関連する例を見つけるのを難しくする問題がいくつかあります。
非常に大きなテーブル (200 万以上のレコード) のジオメトリ フィールドを再投影しているため、フィールドを更新する標準的な方法の多くは使用できません。ジオメトリ フィールドから座標をテキストに抽出し、変換して戻す必要があります。これですべて問題なく、個々の部分はすべて機能しています。
ただし、レコードを 1 つずつループしながら、各行で SQL Update ステートメントを実行したいと考えています。これにより、レコードセットがロックされるか、接続が使用されていると想定されます-以下のコードを使用するかのように、最初のレコードを正常に更新した後にハングします。
新しい接続を作成する方法、既存のものを再利用する方法、またはこれを別の方法で達成する方法についてのアドバイスをいただければ幸いです。
更新された作業コードは次のようになります。いくつかのレコードでは問題なく動作しますが、テーブル全体でハングするため、データを読み込んでいると思われます。
接続ビジー エラーが発生するようになりました。
DBAPIError: (エラー) ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver] Connection is busy with results for another hstmt (0) (SQLExecDirectW)')
これは ODBC ドライバーに問題があるようです - http://sourceitsoftware.blogspot.com/2008/06/connection-is-busy-with-results-for.html
さらなる更新:
プロファイラーを使用しているサーバーでは、選択ステートメントが表示され、最初の更新ステートメントは「開始」されていますが、どちらも完了していません。上位 10 行を返すように Select ステートメントを設定すると、ステートメントは完了し、更新が実行されます。
これはpyodbcと SQL Server ドライバーの問題だと思います。SQL Alchemy を削除して同じ SQL を pyodbc で実行すると、ハングします。更新用の新しい接続オブジェクトを作成しても。
また、MARS - Multiple Active Record Setsを許可する SQL Server Native Client 10.0 ドライバーも試しましたが、違いはありませんでした。最終的に、「結果をページング」し、pyodbc と SQL を使用してこれらのバッチを更新することにしました (以下を参照)。
sql - SQLAlchemyまたはSqlSoup ORMでテーブル関係を自動的に反映する方法は?
SQLAlchemy に基本的な外部キー参照を整数フィールドではなく他の ORM オブジェクトへの参照として自動的に反映させるにはどうすればよいですか?
SQLAlchemyとそのSqlSoupの両方で、テーブルの列は自動的に反映され、リレーションは手動で定義できます。
...
python - TIMESTAMPDIFF を SqlSoup クエリに追加するには?
SqlSoup を実行して使用しているレポート プログラムがあり、 MySqL Function を除いて SqlSoup 呼び出しによってクエリ全体が生成されていますTIMESTAMPDIFF
。
実際の SQL 句は
私は試した
および where 節句 (rc
データベースとテーブルへの参照を含む)
これはコンパイルされますが、ログオンするとPERIOD
as%s
とその下のパラメーターが表示されPERIOD
ますが、これは機能していないようです。
SqlSoupでこれを行うためのアイデアはありますか?
python - SqlAlchemy「すでにクライアントが多すぎます」エラー
私はPythonとピラミッドフレームワークにかなり慣れていません。最近、データベース (postgres) のニーズに対応するために SQLSoup を紹介されました。
すべてが正常に機能していますが、ピラミッド アプリを短期間使用した後、このエラー メッセージが表示されます。postgres ですべてのアイドリング接続を解放するには、ピラミッドを強制終了する必要があります (以下の例外をスローする前に約 50 のアイドリング接続)。
私の質問は、このアイドリング接続を閉じる方法です。以下に示すようにコード行を追加しようとしましたが、役に立ちません。
SQLAlchemy の達人からのポインタはありますか?
python - SqlSoup を使用した Postgres でのデータ変換
Postgres データベースに、メモリ内で分析するには大きすぎるイベントの大きなデータセットがあります。したがって、日時を一定の間隔に量子化し、結果を返す前にデータベース内でグループ化操作を実行したいと考えています。SqlSoup を使用して、適切なテーブルのレコードを反復処理し、必要な変換を行うと考えました。残念ながら、すべてのレコードへの参照を一度にメモリにロードしないような方法で反復を実行する方法がわかりません。データにアクセスし、必要に応じて各レコードを更新するために、一度に 1 つのレコード参照を取得する方法はありますか?
どんな提案でも大歓迎です!
クリス
python - 結合を行うときにSqlSoup / SqlAlchemyのFROM句を変更するには?
結合を実行して、結果の両方のテーブルから特定のフィールドを取得できるようにしたいと考えています。
私は次のことをしています:
各結果について、 にentry
は のすべてのフィールドが含まれており、 のフィールドはまったく表示されtable_B
ませんtable_A
。フィールド名があいまいなため、これがデフォルトで発生することを認識しています。ただし、FROM 句を手動で指定して、この動作をオーバーライドしたいと考えています。ドキュメントに目を通してみたところ、FROM 句を変更するのは簡単ではないようです。私はそれをうまくやることができませんでした。
のフィールドがentry.my_col
どこにあるかを取得できるように、上記のコードに加えることができる正しい変更を誰かが提案していただければ幸いです。my_col
table_A
ありがとう!
python - sqlsoup 挿入 無視
MySQL データベースを処理するために sqlsoup を使用しており、次の SQL を実行したいと考えています。
sqlsoup を使用してこれを行う方法はありますか? 一般に、sqlsoup の標準的なクエリよりも複雑なものに関する情報を見つけるのに苦労しているようです。見つからないリソースはありますか?
python - sqlsoup で辞書を挿入する方法
sqlsoup で辞書を挿入しようとしています。残念ながら、これは機能しません:
それは私にエラーを与える
sqlsoup の更新は正常に機能します。私は本当にこれを分割したくありません
これも同様に機能します。ヘルプ!
python - SQLSoup の複数結合
MySQL データベースのクエリにSQLSoupを使用したいと考えています。
発行したいクエリに複数の結合が含まれています。残念ながら、チュートリアルの例には、まったく異なる列名を持つテーブルが含まれています (テーブル間で列名が重複していません)。
私の場合、すべてのテーブルにpkey
という名前の列がありますid
。
私は次のことを行います:
結果は次のとおりです。
したがって、私は次のことを行います:
結果は次のようになります (以下の完全なクエリを参照してください)。
すべてのテーブルに同じテーブル エイリアスfoo
が使用されているようで、明らかに問題が発生しています。
これを行う正しい方法はありますか?
完全なクエリ: