- Trước hết, bạn có một cú pháp sai trong mã của mình. Python không có
try...catch
khối. Nó cótry...except
khối được sử dụng như thế này:
try:
# something here
except:
# something here
- MySQL không trả lại lỗi khi bạn sử dụng
SELECT
yêu cầu. Tuy nhiên, có hai cách khác nhau để bạn có thể tìm hiểu xem nó có trả lại thứ gì đó hay không.
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")
Một cách khác để làm điều này là tìm nạp câu lệnh và kiểm tra xem nó có trống không:
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
Đây là câu trả lời đầu tiên của tôi, vì vậy tôi không biết làm thế nào để tạo kiểu mã trong câu trả lời cho phù hợp, nó cũng có vẻ lộn xộn vì điều đó. Xin lỗi vì điều đó.
Ngoài ra, tôi sử dụng Python 3 và pymysql, vì vậy có thể có một số lỗi cú pháp nhưng tôi đã cố gắng viết mã theo python 2.7 từ những gì tôi có thể nhớ về nó.
CHỈNH SỬA (5/1/2020)
Cảm ơn @Arishta đã chỉ ra rằng phương pháp đầu tiên sẽ yêu cầu bạn tìm nạp tất cả các hàng trước khi sử dụng row_count. tức là thêm cursor.fetchall()
trước 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")
Sử dụng cursor.fetchone()
nếu bạn chỉ quan tâm xem bản ghi có tồn tại hay không.