Hướng dẫn check table exists in sql using python - kiểm tra bảng tồn tại trong sql bằng cách sử dụng python

23

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang sử dụng chức năng này:

def checker[name,s]
        MY_T = "SELECT count[*] FROM `"+session.SessionInfo.Name where EventName='"+name+"'"

Tôi muốn kiểm tra xem bảng có tồn tại không, làm thế nào tôi có thể làm điều đó? Tôi đã thấy một số ví dụ sử dụng:

query = cursor.execute["""SELECT count[*] FROM scan WHERE prefix = %s and code_id = %s and answer = %s and station_id = %s""",
                          [prefix, code_id, answer, station,]]
        if query != 1:
1 Có nghĩa là gì?

Đây là những gì tôi đã thấy:

query = cursor.execute["""SELECT count[*] FROM scan WHERE prefix = %s and code_id = %s and answer = %s and station_id = %s""",
                          [prefix, code_id, answer, station,]]
        if query != 1:

Tôi đã thử in my_t để xem nó có trả về -1 chẳng hạn không nhưng nó chỉ in

query = cursor.execute["""SELECT count[*] FROM scan WHERE prefix = %s and code_id = %s and answer = %s and station_id = %s""",
                          [prefix, code_id, answer, station,]]
        if query != 1:
2

Làm thế nào tôi có thể kiểm tra nó? Bất kỳ trợ giúp sẽ được rất đánh giá cao.

Đã hỏi ngày 11 tháng 6 năm 2013 lúc 12:35Jun 11, 2013 at 12:35

user1386966user1386966user1386966

3.15213 Huy hiệu vàng39 Huy hiệu bạc69 Huy hiệu Đồng13 gold badges39 silver badges69 bronze badges

3

Sử dụng chế độ xem lược đồ thông tin "bảng". //dev.mysql.com/doc/refman/5.0/en/information-schema.html

SELECT * FROM information_schema.tables
WHERE table_name = 'YOUR TABLE'

Bạn có thể áp dụng chế độ xem này vào mã của mình bằng cách làm một cái gì đó như sau:

def checkTableExists[dbcon, tablename]:
    dbcur = dbcon.cursor[]
    dbcur.execute["""
        SELECT COUNT[*]
        FROM information_schema.tables
        WHERE table_name = '{0}'
        """.format[tablename.replace['\'', '\'\'']]]
    if dbcur.fetchone[][0] == 1:
        dbcur.close[]
        return True

    dbcur.close[]
    return False

Đã trả lời ngày 11 tháng 6 năm 2013 lúc 12:42Jun 11, 2013 at 12:42

4

Nếu bạn đang sử dụng python-mysql [mysqldb]-> //mysql-python.sourceforge.net/mysqldb.html

con trỏ.execute [] là phương thức chạy các truy vấn với MySQLDB, Trình điều khiển Python MySQL. Bạn có thể vượt qua hai đối số, như:

cursor.execute[statement, parameters]

Và sẽ thực thi "câu lệnh" phân tích cú pháp "tham số" cho câu lệnh. Bạn cần phải mở kết nối cơ sở dữ liệu và cũng mở con trỏ

Tôi nghĩ rằng bạn có thể sử dụng câu lệnh của MySQL: Hiển thị các bảng như 'TableName';SHOW TABLES LIKE 'tablename';

stmt = "SHOW TABLES LIKE 'tableName'"
cursor.execute[stmt]
result = cursor.fetchone[]
if result:
    # there is a table named "tableName"
else:
    # there are no tables named "tableName"

EDIT: Sẽ có các trình điều khiển Python khác với hành vi tương tự. Tìm kiếm của bạn :]

Đã trả lời ngày 11 tháng 6 năm 2013 lúc 13:07Jun 11, 2013 at 13:07

Alberto Megíaalberto MegíaAlberto Megía

2.1553 huy hiệu vàng22 Huy hiệu bạc33 Huy hiệu đồng3 gold badges22 silver badges33 bronze badges

Câu trả lời trên có thể không hoạt động cho Oracle, tôi đã tìm thấy đoạn mã bên dưới công việc cho Oracle:

import cx_Oracle
def checkTableExists[dbcon, tablename]:
    dbcur = dbcon.cursor[]
    try:
        dbcur.execute["SELECT * FROM {}".format[tablename]]
        return True
    except cx_Oracle.DatabaseError as e:
        x = e.args[0]
        if x.code == 942: ## Only catch ORA-00942: table or view does not exist error
            return False
        else:
            raise e
    finally:
        dbcur.close[]

Đã trả lời ngày 17 tháng 8 năm 2018 lúc 21:34Aug 17, 2018 at 21:34

1

Tôi thấy rằng điều này hoạt động tốt với Python 3.6 và MySQL 5.7:

table = 'myTable'
_SQL = """SHOW TABLES"""
cursor.execute[_SQL]
results = cursor.fetchall[]

print['All existing tables:', results] # Returned as a list of tuples

results_list = [item[0] for item in results] # Conversion to list of str

if table in results_list:
    print[table, 'was found!']
else:
    print[table, 'was NOT found!']

Đã trả lời ngày 19 tháng 1 năm 2018 lúc 18:16Jan 19, 2018 at 18:16

Tôi nghĩ rằng cách đơn giản nhất là sử dụng:

SELECT COUNT[*] = 1 as exists FROM pg_tables WHERE tablename = 'my_table';

điều đó trở lại nếu bảng tồn tại:

 exists 
--------
 t
[1 row]

hoặc trong Python bằng cách sử dụng

query = cursor.execute["""SELECT count[*] FROM scan WHERE prefix = %s and code_id = %s and answer = %s and station_id = %s""",
                          [prefix, code_id, answer, station,]]
        if query != 1:
3:

query = cursor.execute["""SELECT count[*] FROM scan WHERE prefix = %s and code_id = %s and answer = %s and station_id = %s""",
                          [prefix, code_id, answer, station,]]
        if query != 1:
0

Đã trả lời ngày 23 tháng 11 năm 2021 lúc 12:04Nov 23, 2021 at 12:04

điều chỉnhtuned

1.05710 Huy hiệu bạc14 Huy hiệu đồng10 silver badges14 bronze badges

Làm thế nào để bạn kiểm tra xem bảng SQL có tồn tại trong Python không?

Chọn TableName từ sqlite_master trong đó loại = 'bảng' và tablename = 'student'; Sau đó, sử dụng phương thức fetchall [] trên biến đó để tạo danh sách các bảng chứa tên của mẫu được tìm thấy. Nếu danh sách trống thì bảng không tồn tại trong cơ sở dữ liệu.

Làm cách nào để kiểm tra dữ liệu SQL trong Python?

Các bước để tìm nạp các hàng từ bảng cơ sở dữ liệu MySQL..
Kết nối với MySQL từ Python.....
Xác định truy vấn chọn SQL.....
Nhận đối tượng con trỏ từ kết nối.....
Thực thi truy vấn chọn bằng phương thức Execute [].....
Trích xuất tất cả các hàng từ một kết quả.....
Lặp lại mỗi hàng.....
Đóng đối tượng đối tượng con trỏ và đối tượng cơ sở dữ liệu ..

Làm thế nào để bạn kiểm tra xem một bảng có tồn tại hay không?

Để kiểm tra xem bảng có tồn tại trong cơ sở dữ liệu, bạn cần sử dụng câu lệnh CHỌN trên các bảng Lược đồ thông tin hay bạn có thể sử dụng hàm siêu dữ liệu Metadata Object_id [].Thông tin_Schema.Các bảng trả về một hàng cho mỗi bảng trong cơ sở dữ liệu hiện tại.use a Select statement on the information schema TABLES or you can use the metadata function OBJECT_ID[]. The INFORMATION_SCHEMA. TABLES returns one row for each table in the current database.

Làm thế nào để bạn kiểm tra xem một bảng đã tồn tại trong sqlite?

Sử dụng mã này: Chọn tên từ sqlite_master trong đó loại = 'bảng' và name = 'yourTableName'; nếu số mảng được trả về bằng 1, điều đó có nghĩa là bảng tồn tại.Nếu không nó không tồn tại.SELECT name FROM sqlite_master WHERE type='table' AND name='yourTableName'; If the returned array count is equal to 1 it means the table exists. Otherwise it does not exist.

Bài Viết Liên Quan

Chủ Đề