Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQLdb - Kiểm tra xem hàng có tồn tại Python không

  1. 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
  1. 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nodejs Cluster với các kết nối MySQL

  2. Cách tăng tự động trong một tập hợp con của bảng MYSQL

  3. Thêm trường ẩn tùy chỉnh trong biểu mẫu paypal và lấy nó trên trang được chuyển hướng

  4. dấu nháy đơn trong khi Chèn (Mysql)

  5. chèn dữ liệu vào cơ sở dữ liệu bằng servlet và jsp trong eclipse