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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

892閲覧

Python3 _ MySQLのselect文でSyntaxエラー

Yakusugi

総合スコア123

MySQL

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

Python 3.x

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

0グッド

0クリップ

投稿2023/01/10 14:15

PythonでMySQLサーバにアクセスし、簡単なselect文を実行したいのですが、
下記の様なエラーが発生してしまいます。

やりたいこととしては、
「store_name = str(input("What is the store name? "))」でユーザ名を取得、
受け取ったユーザ名を使ってselect文を発行。

エラー文

What is the store name? amazon parameterized query failed 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 '" + ?' at line 1 MySQL connection is closed

下記が実行ファイルになります。

mysql_select.py

1import mysql.connector 2 3store_name = str(input("What is the store name? ")) 4 5try: 6 connection = mysql.connector.connect(host='localhost', user='username', password='pasword', database='db') 7 8 cursor = connection.cursor(prepared=True) 9 sql_query = """select * from sample_tbl where store_name = " + %s""" 10 tuple1 = (store_name) 11 cursor.execute(sql_query, tuple1) 12 13 for tbl in cursor: 14 print(tbl) 15 16 connection.commit() 17 18 19except mysql.connector.Error as error: 20 print("parameterized query failed {}".format(error)) 21finally: 22 if connection.is_connected(): 23 cursor.close() 24 connection.close() 25 print("MySQL connection is closed")

sample_tbl

1mysql> select * from sample_tbl; 2+----+------------+------------+--------------+--------------+-------+---------------------+ 3| id | date | store_name | product_name | product_type | price | created_at | 4+----+------------+------------+--------------+--------------+-------+---------------------+ 5| 1 | 2022-09-14 | Amazon | Echo show | gadget | 56.7 | 2022-09-14 10:06:04 | 6| 3 | 2022-09-21 | Google | Pixel 6 Pro | gadget | 68000 | 2022-09-21 23:10:48 | 7+----+------------+------------+--------------+--------------+-------+---------------------+

大変お手数ではございますが、解決の為ヒントなどがあれご教示頂けますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

クオートの閉じが変なのと、タプルの最後にカンマを加える必要があるんですかね

py

1 2import mysql.connector 3 4store_name = str(input("What is the store name? ")) 5 6try: 7 connection = mysql.connector.connect(host='localhost', user='username', password='pasword', database='db') 8 9 cursor = connection.cursor(prepared=True) 10 # sql_query = """select * from sample_tbl where store_name = " + %s""" 11 # tuple1 = (store_name) 12 sql_query = """select * from sample_tbl where store_name = %s""" 13 tuple1 = (store_name,) 14 cursor.execute(sql_query, tuple1) 15 16 for tbl in cursor: 17 print(tbl) 18 19 connection.commit() 20 21 22except mysql.connector.Error as error: 23 print("parameterized query failed {}".format(error)) 24finally: 25 if connection.is_connected(): 26 cursor.close() 27 connection.close() 28 print("MySQL connection is closed") 29 30import mysql.connector 31

投稿2023/01/10 14:51

yuma.inaura

総合スコア1453

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

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

Yakusugi

2023/01/10 15:05

ありがとうございます! うまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問