Hướng dẫn how do you check if a resultset is empty in python? - làm cách nào để kiểm tra xem tập kết quả 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

exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
0 và
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
1 cho phép bạn xử lý ________ 12/________ 13. Khối
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
4 cho phép bạn thực thi mã, bất kể kết quả của các khối ____10 và
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
1. 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
7.

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
8
exist = cursor.fetchone()
if exist is None:
  ... # does not exist
else:
  ... # exists
9
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
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
9
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

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

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 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))
2 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))
3 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))
4), 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))
5; 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))
6 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))
7 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 Thông số kỹ thuậ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))
8:

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))
7 trong trường hợp không có
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 đã đượ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

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 ***********************
1 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 ***********************
2 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


Bất cứ khi nào chúng tôi thực thi các câu lệnh SQL bằng phương thức ExecuteQuery (), nó sẽ trả về một đối tượng kết quả giữ dữ liệu bảng được trả về bởi các truy vấn chọn (nói chung).executeQuery() method, it returns a ResultSet object which holds the tabular data returned by the SELECT queries(in general).

Đối tượng resultset chứa một con trỏ/con trỏ trỏ đến hàng hiện tại. Ban đầu con trỏ này được định vị trước hàng đầu tiên (vị trí mặc định).

Phương thức tiếp theo ()

Phương thức tiếp theo () & nbsp; của giao diện kết quả di chuyển con trỏ của đối tượng dòng (resultset) sang hàng tiếp theo, từ vị trí hiện tại.next() method of the ResultSet interface moves the pointer of the current (ResultSet) object to the next row, from the current position.

Phương thức này trả về một giá trị boolean Chỉ định xem đối tượng resultset có chứa nhiều hàng hơn không. Nếu không có hàng bên cạnh vị trí hiện tại của nó, phương thức này sẽ trả về sai, thì nó sẽ trả về đúng.

Do đó, bạn sẽ sớm truy xuất đối tượng resultset nếu cuộc gọi đầu tiên vào () phương thức tiếp theo trả về sai cho thấy đối tượng resultset thu được không có bản ghi.next() method returns false that indicated that the obtained ResultSet object has no records.

Hãy để chúng tôi tạo một bảng có tên hướng dẫn_data trong cơ sở dữ liệu MySQL bằng cách sử dụng câu lệnh CREATE như được hiển thị bên dưới & nbsp; - -

CREATE TABLE tutorials_data (
   tutorial_id INT,
   tutorial_title VARCHAR(100),
   tutorial_author VARCHAR(40),
   submission_date date,
   PRIMARY KEY (tutorial_id)
);

Bây giờ, chúng tôi sẽ chèn 5 bản ghi trong hướng dẫn_data & nbsp; bảng bằng cách sử dụng các câu lệnh chèn -tutorials_data table using INSERT statements −

insert into tutorials_data values(1, 'Java', 'Krishna Kasyap', DATE('2019-09-01'));
insert into tutorials_data values(2, 'JFreeCharts', 'Satish Kumar', DATE('2019-05-01 '));
insert into tutorials_data values(3, 'JavaSprings', 'Amit Tiwari', DATE(' 2019-05-01'));
insert into tutorials_data values(4, 'Android', 'Sai Ram', DATE('2019-03-01'));
insert into tutorials_data values(5, 'Cassandra', 'Pruthvi Raj', DATE(' 2019-04-06'));

Sau các ví dụ JDBC lấy nội dung của bảng đã đề cập ở trên vào một đối tượng kết quả và xác minh xem nó có trống hay không.

Thí dụ

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RS_is_empty {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/mydb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from tutorials_data");
      if(rs.next()) {
         System.out.println("Obtained Resultset object is not empty its contents are:");
         rs.beforeFirst();
         while(rs.next()) {
            System.out.print("ID: "+rs.getInt("tutorial_id")+", ");
            System.out.print("Title: "+rs.getString("tutorial_title")+", ");
            System.out.print("Author: "+rs.getString("tutorial_author")+", ");
            System.out.print("Submission date: "+rs.getDate("submission_date"));
            System.out.println();
         }
      } else {
         System.out.println("Obtained ResultSet object is empty");
      }
   }
}

Đầu ra

Connection established......
Obtained Resultset object is not empty its contents are:
ID: 1, Title: Java, Author: Krishna Kasyap, Submission date: 2019-09-01
ID: 2, Title: JFreeCharts, Author: Satish kumar, Submission date: 2019-05-01
ID: 3, Title: JavaSprings, Author: Amit Tiwari, Submission date: 2019-03-01
ID: 4, Title: Android, Author: Sai Ram, Submission date: 2019-03-01
ID: 5, Title: Cassandra, Author: Pruthvi Raj, Submission date: 2019-04-06

Hướng dẫn how do you check if a resultset is empty in python? - làm cách nào để kiểm tra xem tập kết quả có trống trong python không?

Cập nhật vào ngày 21 tháng 8 năm 2020 10:51:41

  • Câu hỏi và câu trả lời liên quan
  • Làm thế nào để bạn kiểm tra xem kết quả có được đóng hay không trong JDBC?
  • Chương trình Java để kiểm tra xem một chuỗi có trống hay không
  • Làm thế nào để kiểm tra xem một trường văn bản có trống hay không trong Swift?
  • Truy vấn MySQL để kiểm tra xem cơ sở dữ liệu có trống hay không?
  • Làm cách nào để kiểm tra xem một cột có trống hoặc null trong mysql không?
  • Kiểm tra xem bảng có trống hay không trong mysql
  • Làm thế nào chúng ta có thể kiểm tra xem một đối tượng JSON có trống hay không trong Java?
  • Kiểm tra xem một thư mục không trống trong Java
  • Kiểm tra xem danh sách không trống trong MongoDB?
  • Chương trình Python để kiểm tra xem chuỗi có trống hay không
  • Kiểm tra xem một ngăn xếp có trống hay không ở Java
  • Kiểm tra xem Hashset có trống hay không trong Java
  • Làm thế nào để kiểm tra xem nhóm tài nguyên Azure có trống hoặc không sử dụng PowerShell không?
  • C# chương trình để kiểm tra xem danh sách có trống hay không
  • Chương trình Python để kiểm tra xem danh sách có trống hay không?

Làm thế nào để kiểm tra kết quả truy vấn trống trong Python?

Giải pháp 3: Sử dụng Len () và đưa ra chiều dài của danh sách trống là 0 Nó có thể được sử dụng để kiểm tra xem danh sách có trống trong Python không.Using len() And given the length of an empty list is 0 it can be used to check if a list is empty in Python.

Làm cách nào để kiểm tra xem con trỏ có trống không?

Nếu độ dài của danh sách bằng không (nghĩa là danh sách trống), điều này ngụ ý con trỏ cũng trống.Cơ sở dữ liệu mẫu: Ví dụ: Python3.. Sample Database: Example: Python3.

Làm thế nào để bạn kiểm tra xem kết quả SQL có trống không?

Kiểm tra xem bảng SQL có trống hay không..
Sử dụng thực thi hoạt động truy vấn và ghi truy vấn chọn và nó sẽ cung cấp đầu ra dưới dạng dữ liệu.Giả sử 'inputdt' ..
Và sau đó kiểm tra số lượng hàng như dưới đây.InputDt.Rows.Count ..
Nếu nó lớn hơn 0 thì dữ liệu không tồn tại khác ..

Fetchall trở lại trong Python gì?

Phương thức Fetchall ().Phương thức lấy tất cả (hoặc tất cả các hàng còn lại) của bộ kết quả truy vấn và trả về một danh sách các bộ dữ liệu.Nếu không có thêm hàng, nó sẽ trả về một danh sách trống.a list of tuples. If no more rows are available, it returns an empty list.