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

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

ただいまの
回答率

90.47%

  • MySQL

    7140questions

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

  • Python 2.7

    1471questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 3
  • VIEW 3,220

u_k_statistics

score 36

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の設定は

イメージ説明
のようになっています。
どこを直せばいいのでしょうか?
宜しくお願い致します。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/24 15: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のところが文法エラーのようなのですが、解決方法をご存知でしょうか?
    宜しくお願い致します。

    キャンセル

  • 2015/06/24 15: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
    とでました。
    どこを変更したらうまくいくのでしょうか?
    宜しくお願い致します。

    キャンセル

  • 2015/06/24 16:18

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

    キャンセル

  • 2015/06/24 16: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でもダメなのには何か理由があるのでしょうか?
    宜しくお願い致します。

    キャンセル

  • 2015/06/24 17:13

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

    キャンセル

  • 2015/06/24 17:46

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

    キャンセル

  • 2015/06/25 13: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)

    でよろしいのでしょうか?
    エラーは出なかったのですが出力画面も何も出ず、データベースをチェックしてもデータが挿入されていませんでした。
    何度も申し訳ありません。。。

    キャンセル

  • 2015/06/25 13:56

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

    キャンセル

  • 2015/06/25 23:51

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

    キャンセル

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • MySQL

    7140questions

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

  • Python 2.7

    1471questions

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