問題タブ [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 - Connector/Python が多くの最適化挿入を実行しないのはなぜですか?
Connector/Python を使用して、mysql の一時テーブルに多くの行を挿入しています。行はすべてリストのリストにあります。私はこのように挿入を行います:
(もちろん、さらに多くの行を使用すると) パフォーマンスが極端に低下することに気付きました。SHOW PROCESSLIST を使用すると、各挿入が個別に実行されていることに気付きました。しかし、ドキュメントhttps://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.htmlには、これを 1 つの挿入に最適化する必要があると記載されています。どうしたの?
python - Python + sqlite3: 「構築された」値を持つ executemany
executemany
Python で使用して、いくつかの行にデータを入力しようとしています。
しかし、私は得ています:
executemany
一般に、生の値を可能な限り効率的にDBに詰め込むために使用していることを理解しています。それを念頭に置いて、通常、挿入される値の数を列の数と一致させたいと考えています。
しかし、1 つ以上の列が SQL によって「構築」され、対応する入力値がない場合はどうなるでしょうか。
小さな例:
それを実行すると、上部に記載されているエラーが表示されます ( 3 values for 4 columns
)。
SELECT a,b
分割することで解決できると思いますSELECT a..., SELECT b...
が、何か良い方法はありませんか?
ここに示した例は小さいものです。実際には、10 列になるかもしれませんが、それぞれの(SELECT ...)
節を詳細にリストする必要があります。
UPDATE 1executemany
私が最初に考えていたように、これはに固有のものではありません。単純な SQL を手動で実行しても同じ問題があります。
UPDATE 2以下の回答では、SELECT
ではなくa を使用することをお勧めしますVALUES
が、新しい行が追加されている場合 (私の「アップサート」の場合のように)、これは機能しませSELECT
ん。その場合、 は行を返さないためです。
database - Python3 と SQlite3 で 3 つのリストを 6 つの列に書き込む方法
sqlite3 を使用して、値のペアを含む 3 つのリストを 6 つの列に書き込む必要があります。
そのようです:
各ペアを .db に並べて挿入する必要があります。ペアワイズ関数を利用してこれを行い、単一のリストに対して多くを実行できます。
ペアワイズ関数:
1 つのリストに対して機能する多くのコードを実行します。
同時に他のリストを渡そうとするたびに:
次のようなエラーが表示されます。
python-2.7 - executemany コマンドを使用すると別のエラーが発生する
executemanyを使用するとエラーが発生する次のコードを記述します。しかし、ループを使用してクエリを実行すると、正常に動作します。この問題を解決するにはどうすればよいですか。
data[0] の値は次のとおりです。
これはクエリです:
次に、次のエラーが発生しました。
また、次のコードを実行したいときに、executemanyコマンドを使用して行からエラーが発生しました。
これはエラーです:
executemanyの代わりに loop を使用すると機能します。