- まず、コードの構文が間違っています。 Pythonには
try...catch
がありません ブロック。try...except
があります このように使用されるブロック:
try:
# something here
except:
# something here
-
SELECT
を使用しても、MySQLはエラーを返しません。 指図。ただし、何かが返されたかどうかを確認する方法は2つあります。
PYTHON 2.7
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print "number of affected rows: {}".format(row_count)
if row_count == 0:
print "It Does Not Exist"
PYTHON 3+
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print ("number of affected rows: {}".format(row_count))
if row_count == 0:
print ("It Does Not Exist")
これを行う別の方法は、ステートメントをフェッチして、それが空かどうかを確認することです。
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
これが私の最初の答えなので、答えのコードを適切にスタイル設定する方法がわかりません。そのため、面倒なようにも見えます。申し訳ありません。
また、Python 3とpymysqlを使用しているため、構文エラーが発生する可能性がありますが、覚えていることからpython2.7に従ってコードを記述しようとしました。
編集 (2020年5月1日)
最初のメソッドでは、row_countを使用する前にすべての行をフェッチする必要があることを指摘してくれた@Arishtaに感謝します。つまり、cursor.fetchall()
を追加します row_count = cursor.rowcount
の前
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# Add THIS LINE
results = cursor.fetchall()
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print("number of affected rows: {}".format(row_count))
if row_count == 0:
print("It Does Not Exist")
cursor.fetchone()
を使用します レコードが存在するかどうかだけを気にする場合。