問題タブ [executemany]
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 - 多数の行に対するMySQLdbエラーのexecutemany
現在、execute many関数を使用して、MySQLデータベースに値(タプルのリスト)を挿入するスクリプトを実行しています。少数の行( `1000)を使用すると、スクリプトは正常に実行されます。
約40,000行を使用すると、次のエラーが発生します。
助言がありますか?
python - SqliteexecutemanyとDELETE
多くの実行は削除で非常に遅いようです(挿入は問題ありません)そして私は誰かがなぜそんなに時間がかかるのか知っているのだろうかと思っていました
以下のコードを検討してください
そして、ipythonからの次の時間結果(timeitは面白いデータを与えていたので:/)
そして、完全を期すために、ここにtimeitの結果を示します(ただし、timeitは2番目のテストで壊れていると思います(またはmsは最初のテストとは異なる単位です))
では、なぜ多くの実行が削除で遅いのですか?
python - SQLite3 Python: executemany SELECT
executemany 関数を使用して、いくつかの WHERE 制約を使用して、テーブルからすべての行を 1 行で取得しようとしています。
エラー
python - csv行をexecutemany()に遅延して渡すにはどうすればよいですか?
Python 3.3 および MySQL 5.6.12 で MySQL Connector/Python 1.0.11 を使用して、cursor.executemany ('INSERT INTO ... VALUES') を介して csv ファイルをテーブルにロードしています。sqlite3 または psycopg2 を使用すると、seq_of_parameters に _csv.reader オブジェクトを渡すことができますが、MySQL は次のエラーで失敗します。
ドキュメントではシーケンスでなければならず、_csv.readerオブジェクトは列挙子( iterとnextを定義する) であり、シーケンスではありません。もちろん、'list(my_csv_reader)' を渡すこともできますが、これは遅延ではないと確信しており、これらのファイルには 10^6+ 行を含めることができます。それを怠惰に渡す方法はありますか?または、INSERT を実行する前に executemany() がリストを展開するので、時間を無駄にしていますか? (cursor.py からのヒント:「INSERT ステートメントは、データをバッチ処理することによって最適化されます。つまり、MySQL の複数行の構文を使用します。」) イテレータをジェネレーターでラップするようなものかもしれません。ala http://www.logarithmic.net/ pfh/blog/01193268742 . あなたの考えをとても楽しみにしています!
python - Python 2.4.3 sqlite executemany 構文
私はpython 2.4.3とそのディストリビューションで発行されたsqliteモジュールを使用して立ち往生しています。
この環境で executemany コマンドを実行するにはどうすればよいですか? より現代的な構文には問題があるようです。
Python 2.4.3 はかなり古いと思いますが、ドキュメントが見つからず、executemany 関数に 関連付けられた関連するドキュメント文字列がありません。
私は助けに感謝します。
python - psycopg2は単純なリストで多くの実行しますか?
単純なマルチ挿入に psycopg2 executemany を使用しようとしていますが、値の「プレーンな」シーケンスではなく、dict を使用してのみ機能させることができます。
「名前付き」パラメーター (%(value)s) を使用せずに、値の「単純な」リスト/タプルを与えることはできませんか?
python - Python で cx_Oracle と xlrd を使用したリストのリストで executemany() が TypeError を返す
Excel ドキュメントからデータを読み取り、それを Oracle データベースの単一のテーブルに書き込む Python スクリプトを作成しようとしています。現在xlrd
、Excel ドキュメントから読み取りcx_Oracle
、データをデータベースに挿入するために使用しています。
以前は、ネストされた for ループ構造を使用して、Excel ドキュメントのすべての列を調べ、各列の値を変数に格納し、値をテーブルに挿入してから、すべての行に対してこれを行っていました。ただし、これは数千行のデータではかなり非効率的であり、executemany()
cx_Oracle を使用したステートメントを使用して実行しようとしています。
現在、このコードを使用してデータをリストのリストにロードし、executemany() コマンドを呼び出しています。
行リストは次のようになります。
ただし、executemany() ステートメントの実行時に型エラーが発生します。
(データ読み取りの最後の行に単一の挿入を行う)を実行すると、クエリは完全に正常に実行cursor.execute(query, row)
されるため、クエリ文字列ではなく、パラメーターのリストのフォーマット方法に問題があると思います。ただし、このチュートリアルに従って、パラメーターは正しくフォーマットされているように見えますが、コードが機能しない理由を理解してくれる人はいますか?
更新:そこで、変数にデータを手動で挿入してrows
、フォーマットがオフになっているかどうかを確認し、Unicode 文字を削除しようとしました:
これら 3 つのエントリを挿入すると問題なく動作したため、現在、問題の原因として Unicode 文字を調査しています。どんな助けでも大歓迎です。
python - MySQLdb カーソルは空のイテレータをサポートしていませんか?
rows
空のイテレータを使用すると、エラーが発生します。
もしそうならcur.executemany(sql, list(rows))
、それはうまくいきます。
以下は、MySQLdb Cursors.py
python - Python cx_Oracle. executemany() で頭を叩く
私は昨日のほとんどをここやウェブで質問を見て過ごしましたが、何が欠けているのかまだわかりませんでした. 本当にばかげたものに違いないと確信していますが、今では燃え尽きています。
したがって、コード:
(これは問題なく作成されます)
(これは現在、セッション プール ガードに送られ、最終的には以下になります)
これを実行すると、次のエラーが表示されます
リストから値「55」を削除すると、他のすべてが正常に挿入されるため、1 文字の長さの値のみを受け入れているように見えます。
execute() だけで各ステートメントを実行すると、ステートメントが挿入されます。コードまたはOracleが位置引数を処理する方法のいずれかで何かを行う必要があると確信していますが、今では迷っています。
助けてくれてありがとう!