質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3092閲覧

【SQL】Pythonで多次元配列をINSERTする方法について

syoco0330

総合スコア30

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/07 13:32

多次元配列のデータを一括でINSERTしたいです。
一要素ずつINSERTすることはできるのですが、一回のINSERTでできるようにしたいです。
どのようにしたらよろしいでしょうか?

言語:Python 3.7
SQL:MySQL 5.7

Python

1data = [[1, 'あああ', '20210907'], 2 [1, 'いいい', '20210906'], 3 [1, 'ううう', '20210907'], 4 [1, 'えええ', '20210906'], 5 [1, 'おおお', '20210907']] 6 7# 多次元ではない場合のINSERT文です。 8 sql = "INSERT INTO" 9 sql = sql + " SCRAPE_LIST(列1,列2,列3)" 10 sql = sql + " VALUES " 11 sql = sql + " (1,'かかか','20210907')" 12 sql = sql + " ON duplicate key update " 13 sql = sql + " updatetime = '2021/09/11'" 14 cur.execute(sql) 15 conn.commit() 16 conn.close()

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikapy

2021/09/07 13:57

バルクインサートを使ったらどうですか。 キーワード:mysql バルクインサート
syoco0330

2021/09/08 22:27

コメントありがとうございます。 バルクインサート試してみようと思います。
guest

回答1

0

ベストアンサー

書式自体バルクインサートになっているので
SQLのvaluesがつながるように書けばいいのでは
(以下python省略)

SQL

1 create table SCRAPE_LIST( 2 id int primary key auto_increment, 3 col1 int, 4 col2 varchar(20) unique, 5 col3 char(8), 6 updatetime date null); 7 8/* ダミー値設定 */ 9insert into SCRAPE_LIST(col1,col2,col3) values 10(0,'いいい','00000000'); 11 12/* 追加処理 */ 13INSERT INTO SCRAPE_LIST(col1,col2,col3) VALUES 14(1,'あああ','20210907'), 15(1,'いいい','20210906'), 16(1,'ううう','20210907'), 17(1,'えええ','20210906'), 18(1,'おおお','20210907') 19ON duplicate key update 20updatetime = '2021-09-11'

投稿2021/09/08 01:05

yambejp

総合スコア115102

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syoco0330

2021/09/08 22:34

コメントありがとうございます。 元データを 変更前:(0,'いいい','00000000') 変更後:('0','いいい','00000000') にして、配列を1つの文字列にしてINSERTすることができました。 配列を1つの文字列にするコードは下記です。 ーーーーーーーーーーーーーーーーーー strData = "" for i in range(len(data)): item = "" for j in range(len(data[i])): if j == 0: item = item + "'" + data[i][j] + "'" else: item = item + ",'" + data[i][j] + "'" item = "(" + item + ")" if i == 0: strData = item else: strData = strData + "," + item ーーーーーーーーーーーーーーーーーー もう少し簡単なやり方がありそうな気もしますが。。。 やりたいことは実現できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問