trước hết, như đã nói ở đây: Kiểm tra tên cột SQL hợp lệ
Nó xuất phát từ tài liệu PostGre, nhưng vì PostGre rất gần với cú pháp SQL "lý tưởng", nó có thể giống nhau đối với mysql ... Vì vậy, không có dấu ngoặc đơn thành tên cột, không có dấu cách ...
Và thứ hai, Tên cột không phải là chuỗi :
Cú pháp sau hợp lệ:
CREATE TABLE (test VARCHAR(100) NOT NULL, ...)
Và cái sau không hợp lệ và sẽ gây ra lỗi cú pháp:
CREATE TABLE ('test' VARCHAR(100) NOT NULL, ...)
Khi bạn sử dụng công cụ sửa đổi '% s', nó sẽ phân tích cú pháp dữ liệu dưới dạng STRING. vì vậy nó bao quanh nó bằng dấu ngoặc kép, không hợp lệ ...
Vì vậy, để tạo bảng của bạn, tôi đề xuất một "vòng lặp for" để xác thực dữ liệu (với regexpr) và thêm nó vào chuỗi:
import re
# ...
query = "CREATE TABLE test (ID INT AUTO_INCREMENT,name VARCHAR(50)"
for c in columnames:
if (re.search(r"^[A-Za-z][A-Za-z0-9_]*$", c) query += c + ", FLOAT" #this regex validate string if it begins with alphabetic char (upper or lower case), and if the others characters are alphanumeric, or are underscores
else raise SyntaxError("Invalid Column name!!") #If not, we raise a syntax error
query += ");"
Và sau đó bạn có thể tạo bảng của mình :)