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

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

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

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

8036閲覧

pythonでmysqlにデータを挿入する

u_k_statistics

総合スコア44

MySQL

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

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

3クリップ

投稿2015/06/24 05:24

pythonでmysql.connectorを使用してmysqlにデータを挿入しようと思っているのですが、

try:
# import
import mysql.connector

connect = mysql.connector.connect(user='xxx', password='', host='xxx', database='import_test', charset='utf8') cursor = connect.cursor() sql = 'insert into import_test.test3 (plancode,soeji,getday,plannname,people,today,tommorrow) values (%s, %s, %s, %s, %s, %s, %s);' data = (2317631, 'sssssss', 20140901, 'sssss', 1, 27324, 27324) cursor.execute(sql,data) rows = cursor.fetchall() print(rows) cursor.close() connect.close()

except Exception as e:
print(e)

とすると

No result set to fetch from.

となってしまいます。
各columnの設定は

![イメージ説明]WIDTH:308

のようになっています。
どこを直せばいいのでしょうか?
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

fetchallはselect文を投げて結果を取得する時に利用します。
http://www.python-izm.com/contents/external/mysql.shtml

投稿2015/06/24 05:50

sho_cs

総合スコア3541

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

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

u_k_statistics

2015/06/24 06:17

sho_csさん 回答ありがとうございます。 try: import mysql.connector connect = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='import_test', charset='utf8') cursor = connect.cursor() sql = 'insert into import_test.test3 value(%s, %s, %s, %s, %s, %s, %s);' data = (2317631,"ssasasa",20140901,"sssss",1,27324,27324) cursor.execute(sql,data) cursor.close() connect.close() except Exception as e: print(e) として実行したのですが、 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2317631, 'ssasasa', 20140901, 'sssss', 1, 27324, 27324)' at line 1 のようにでてしまいます。 dataのところが文法エラーのようなのですが、解決方法をご存知でしょうか? 宜しくお願い致します。
u_k_statistics

2015/06/24 06:45

追記失礼します。 sql = 'insert into import_test.test3 value(%s, %s, %s, %s, %d, %d, %d); sql = 'insert into import_test.test3 value(%s, %s, %d, %s, %d, %d, %d); のように%sを一部変えて data = ("2317631" ,"ssasasa" ,20140901 ,"sssss" ,1 ,27324 ,27324) のようにした結果どちらも Not all parameters were used in the SQL statement とでました。 どこを変更したらうまくいくのでしょうか? 宜しくお願い致します。
sho_cs

2015/06/24 07:18

sql = 'insert into import_test.test3 value(%s, %s, %s, %s, %s, %s, %s);' の部分は変更前の全て%sが正しいです。 getdayに設定する値の書式に問題がありそうです。 https://mellowd.co.uk/ccie/?p=5890
u_k_statistics

2015/06/24 07:55

一旦書式を全てのcolumnをvarcharに設定して try: import mysql.connector connect = mysql.connector.connect(user='root', password='', host='127.0.0.1', database='import_test', charset='utf8') cursor = connect.cursor() sql = 'insert into import_test.test3 value(%s, %s, %s, %s, %s, %s, %s);' data2 = ("aaaa" ,"ssasasa" ,"aaaa" ,"sssss" ,"aaaa" ,"aaaa" ,"aaaa") cursor.execute(sql,data2) cursor.close() connect.close() except Exception as e: print(e) を実行したのですが、今度は SyntaxError: Non-ASCII character '\xe6' in file import_test2.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details とエラーが出ました。 全てvarcharでもダメなのには何か理由があるのでしょうか? 宜しくお願い致します。
sho_cs

2015/06/24 08:13

メッセージにあるhttp://python.org/dev/peps/pep-0263/にも記載がありますし、「SyntaxError: Non-ASCII character」で検索しても原因出てきます。
sho_cs

2015/06/24 08:46

環境作って確認してみました。 u_k_statisticsさんの最初のコメントのコードからimport_test.test3の後ろの全角スペースを半角に直すことで正常に動作しました。 関係ないコメントをしてしまいすいません。
u_k_statistics

2015/06/25 04:00

try: import mysql.connector connect = mysql.connector.connect(user='root', password='', host='xxx', database='import_test', charset='utf8') cursor = connect.cursor() sql = 'insert into import_test.test3 value(%s, %s, %s, %s, %s, %s, %s);' data = (2317631,"ssasasa",20140901,"sssss",1,27324,27324) cursor.execute(sql,data) cursor.close() connect.close() except Exception as e: print(e) でよろしいのでしょうか? エラーは出なかったのですが出力画面も何も出ず、データベースをチェックしてもデータが挿入されていませんでした。 何度も申し訳ありません。。。
sho_cs

2015/06/25 04:56

insertはデータの登録なので結果は出力されません。 また、DBへの変更を確定するには最初の回答のリンク先にある通りcommitする必要があります。
u_k_statistics

2015/06/25 14:51

sho_csさん おかげさまで挿入することができました!! 何回も質問に答えてもらい本当に感謝しています。。。 ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問