Hướng dẫn how to check query result is empty in python? - cách kiểm tra kết quả truy vấn có trống trong python không?

Tôi đã có một vấn đề tương tự khi tôi cần thực hiện nhiều truy vấn SQL. Vấn đề là một số truy vấn đã không trả về kết quả và tôi muốn in kết quả đó. Và đã có một sai lầm. Như đã viết, có một số giải pháp.

if cursor.description is None:
    # No recordset for INSERT, UPDATE, CREATE, etc
    pass
else:
    # Recordset for SELECT

Cũng như:

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists

Một trong những giải pháp là:

Khối tryexcept cho phép bạn xử lý ____ 10/________ 11. Khối

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
2 cho phép bạn thực thi mã, bất kể kết quả của các khối tryexcept. Vì vậy, vấn đề được trình bày có thể được giải quyết bằng cách sử dụng nó.

s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))

output:

Executing SQL statements ====> set current query acceleration = enable; <=====
SQL: ====> set current query acceleration = enable; <==== doesn't have output!

Executing SQL statements ====> set current GET_ACCEL_ARCHIVE = yes; <=====
SQL: ====> set current GET_ACCEL_ARCHIVE = yes; <==== doesn't have output!

Executing SQL statements ====> SELECT * FROM TABLE_NAME; <=====

****************** RESULT ***********************

       ----------   DATA   ----------

****************** END RESULT ***********************

Ví dụ ở trên chỉ trình bày sử dụng đơn giản như một ý tưởng có thể giúp giải pháp của bạn. Tất nhiên, bạn cũng nên chú ý đến các lỗi khác, chẳng hạn như tính chính xác của truy vấn, v.v.

Tôi có một câu lệnh SQL trả về không có lượt truy cập. Ví dụ,

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
5.

Tôi muốn kiểm tra xem có bao nhiêu hàng được trả về,

cursor.execute(query_sql)

rs = cursor.fetchall()

Ở đây tôi đã nhận được ngoại lệ: "(0, 'Không có kết quả đặt')"

Làm thế nào tôi có thể ngăn chặn ngoại lệ này, kiểm tra xem tập kết quả có trống không?

Câu hỏi này được gắn thẻ với

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
6
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
7
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
8
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
6
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
7
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
8

~ Được hỏi vào năm 2013-05-15 09:26:38

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
9 thường sẽ được đặt thành 0.

Tuy nhiên, nếu bạn đang chạy một tuyên bố sẽ không bao giờ trả về một tập kết quả (chẳng hạn như

s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
0 mà không có
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
1 hoặc
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
2), thì bạn không cần phải gọi
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
3; Sẽ không có kết quả được thiết lập cho các câu như vậy. Gọi
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
4 là đủ để chạy tuyên bố.


Lưu ý rằng các bộ điều hợp cơ sở dữ liệu cũng được phép đặt ROWCount thành

s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
5 nếu bộ điều hợp cơ sở dữ liệu không thể xác định số lượng bị ảnh hưởng chính xác. Xem Đặc tả PEP 249
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
6:

Thuộc tính là

s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
5 trong trường hợp không có
s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
8 đã được thực hiện trên con trỏ hoặc hàng của hoạt động cuối cùng không thể được xác định bởi giao diện.

Thư viện

s = """ set current query acceleration = enable;
        set current GET_ACCEL_ARCHIVE = yes;
        SELECT * FROM TABLE_NAME;"""

query_sqls = [i.strip() + ";" for i in filter(None, s.split(';'))]
for sql in query_sqls:
    print(f"Executing SQL statements ====> {sql} <=====")
    cursor.execute(sql)
    print(f"SQL ====> {sql} <===== was executed successfully")
    try:
        print("\n****************** RESULT ***********************")
        for result in cursor.fetchall():
            print(result)
        print("****************** END RESULT ***********************\n")
    except Exception as e:
        print(f"SQL: ====> {sql} <==== doesn't have output!\n")
        # print(str(e))
9 có xu hướng làm điều này. Trong tất cả các trường hợp như vậy, nếu bạn phải biết Rowcount bị ảnh hưởng lên phía trước, hãy thực hiện
Executing SQL statements ====> set current query acceleration = enable; <=====
SQL: ====> set current query acceleration = enable; <==== doesn't have output!

Executing SQL statements ====> set current GET_ACCEL_ARCHIVE = yes; <=====
SQL: ====> set current GET_ACCEL_ARCHIVE = yes; <==== doesn't have output!

Executing SQL statements ====> SELECT * FROM TABLE_NAME; <=====

****************** RESULT ***********************

       ----------   DATA   ----------

****************** END RESULT ***********************
0 chọn trong cùng một giao dịch trước tiên.

~ Đã trả lời vào ngày 2013-05-15 09:28:35

Tôi đã gặp vấn đề với RowCount luôn trả lại -1 bất kể tôi đã thử giải pháp nào.

Tôi tìm thấy một sự thay thế tốt để kiểm tra một kết quả null.

c.execute("SELECT * FROM users WHERE id=?", (id_num,))
row = c.fetchone()
if row == None:
   print("There are no results for this query")

~ Đã trả lời vào năm 2018-03-30 19:50:08

Tôi đang cố gắng kiểm tra bằng cách sử dụng (nếu / khác) nếu truy vấn của tôi trả về bất kỳ giá trị nào. Cách đơn giản nhất để làm điều này là gì?

Cảm ơn

result = db.execute("SELECT * FROM home WHERE id = ? AND name = ?", str(conn), str(name))

Khi được hỏi ngày 12 tháng 5 năm 2021 lúc 16:17May 12, 2021 at 16:17

Hướng dẫn how to check query result is empty in python? - cách kiểm tra kết quả truy vấn có trống trong python không?

db.execute luôn trả về một mảng, bạn luôn có thể in vào bảng điều khiển để xem nội dung của nó, nếu ý định của bạn là gỡ lỗi. Nếu những gì bạn muốn là cảnh báo người dùng, chỉ cần kiểm tra xem kết quả đó không phải là null và trả về cảnh báo:

if not result:
    return apology("You have not......")

ví dụ trong trường hợp mà xin lỗi.html tồn tại.

Đã trả lời ngày 12 tháng 5 năm 2021 lúc 17:00May 12, 2021 at 17:00

Hướng dẫn how to check query result is empty in python? - cách kiểm tra kết quả truy vấn có trống trong python không?

MarsmarsMARS

5.1913 Huy hiệu vàng12 Huy hiệu bạc23 Huy hiệu đồng3 gold badges12 silver badges23 bronze badges

Bạn phải đăng nhập để trả lời câu hỏi này.

Không phải là câu trả lời bạn đang tìm kiếm? Duyệt những câu hỏi khác được gắn thẻ

.