0
私は本当に面倒な日常の仕事をしています。私はデータベースにcsvシートをアップロードする必要があります。 データソースには単純な残りのAPIがあるので、JSON Urlですべてのデータを要求することができます。そのために私はJSONをラップし、すべてのデータを自分のDBに挿入する小さなpythonスクリプトを実装します。 問題は、インサートが本当に遅い(私は10分より少ないと予想していましたが)3つのホウールが壊れた後です。データのアップロードを最適化する(MySQL、Python)
db = MySQLdb.connect(host="...", # your host, usually localhost
user="...", # your username
passwd="...", # your password
db="...") # name of the data base
with db:
cur = db.cursor()
JSONURL = URL[0][y]+URL2+URL3+URL4+URL5
response = urllib.urlopen(JSONURL)
data = json.loads(response.read())
n=len(data["results"])-1
for z in range(0,n):
with db:
sql="INSERT INTO t_data (col1,col2,col3) VALUES("+data["results"][0]+","+data["results"][1]+","+data["results"][2]+")"
cur.execute(sql)
私はMySQLを使用して見ることができるように: はここに私のコード(よりよい理解のために少し一口変化する)です。たぶん私は準備ステートメントを使用することができます(しかし、私はそれがPython上で動作するかどうかわかりません。私はそれをどうしますか?) より良いパフォーマンスを得るためにMySQLの設定を変更することは可能ですか? 私はどんな助けも楽しみにしています。
なぜあなたは何度も挿入クエリの代わりに 'bulk-insert'を使うべきではありません。ここにそのリンクがありますhttps://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html –
その文書はあなたを助けましたか? @nicoschuck –
後半のご返答申し訳ありません。私はすぐに家にいると私はそれを試してみましょう。あなたはbuldの挿入を好むか、またはprefareがよいでしょうか?あなたの経験は何ですか?@anandtripathi – nicoschuck