🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

1回答

2534閲覧

PythonからMariadbに入力する方法について

ishigurojunior

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2021/01/11 02:13

編集2021/01/11 02:34

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Pythonでmariadbに自分で作ったGoogleAPIの結果のJsonを入力したいのですが、何度挑戦してもMariadbに入力できません。
初心者で、質問の仕方もわかっていない状況です。
見にくいコードですが、よろしくお願いします。

発生している問題・エラー

raise errors.get_exception(packet)

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '%s, %s),' at line 1

該当のソースコード

Python

1```import mysql.connector as mydb 2import json 3import config 4import sys 5import requests 6 7conn = mydb.connect( 8 host='localhost', 9 port='', 10 user='root', 11 password='*****', 12 database='' 13) 14conn.ping(reconnect=True) 15# APIをゲットする 16url = 'https://script.google.com/macros/s/AKfycby_VmtP7TpmRAwRNxy4jLDnxWSVz3MUyi-7KIXkjA36LCCQFwU/exec' 17response = requests.get(url) 18jsonData = response.json() 19print(jsonData) 20 21# mysqlに挿入 22mycursor = conn.cursor() 23sql = "INSERT INTO kayumi(id, date , jsonData) VALUES (%s, %s)," 24mycursor.execute(sql) 25conn.commit() 26 27print(mycursor.rowcount, "record inserted.") 28#r = cursor.execute(sql, (id, name)) 29# print(r) # -> 1 30print(sql) 31# cursor.close() 32# 接続できているかどうか確認 33print(conn.is_connected()) 34コード

ソースコード

### 試したこと https://www.w3schools.com/python/python_mysql_insert.asp ここを参考にしました。 ここに問題に対して試したことを記載してください。 ```ここに言語を入力 コード

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/01/11 04:17

>初心者で、質問の仕方もわかっていない状況です。 これを書く必要はないです。「質問するときのヒント」のページをヘルプページから確認してください。
guest

回答1

0

ベストアンサー

エラーメッセージには、

You have an error in your SQL syntax;

と出てます。SQLの構文が間違ってるという事です。
あなたが書いたSQLは以下ですが、

python

1sql = "INSERT INTO kayumi(id, date , jsonData) VALUES (%s, %s),"

SQL文を分けて説明すると、

sql

1INSERT 2 INTO kayumi # <- テーブル名 3 (id, date, jsonData) # <- 列名 4 VALUES 5 (%s, %s), # <- 値を登録するためのプレースホルダ 6

プレースホルダとは、実際の値に置き換えるためのアテ字です。

あなたが参考にしたサイトの内容は以下ですが、

python

1sql = "INSERT INTO customers (name, address) VALUES (%s, %s)" 2val = ("John", "Highway 21") 3mycursor.execute(sql, val)

"John", "Highway 21" という文字が、VALUESの %s に置き換わって、

python

1sql = "INSERT INTO customers (name, address) VALUES ('John', 'Wighway 21')"

このように解釈されて実行されます。

あなたのSQLは

sql

1INSERT 2 INTO kayumi 3 (id, date, jsonData) 4 VALUES 5 (%s, %s), # <- %sの数が列数とあってない。 6 # <- 最後に謎のカンマ(,)が付いている。 7

これを直すと、

python

1 2mycursor = conn.cursor() 3sql = "INSERT INTO kayumi(id, date , jsonData) VALUES (%s, %s, %s)" 4val = ("id??", "date??", jsonData) 5mycursor.execute(sql)

となりますが、、idとdateがどこにも記載されてないので、適当に書きましたが、

  • そもそも kayumi テーブルは定義されましたか? idとdateには何を入れるつもりですか?
  • 7行目からのDB接続の内容は、portもdatabaseも空ですが、接続はできていますか?
  • データベースは起動していますか?

もし聞かれていることの意味が分からないなら、データベースについて少し勉強して、環境を整えてから出直しましょう。

投稿2021/01/11 03:25

umau

総合スコア831

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問