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

lỗi python mysql trong truy vấn

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 :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khắc phục câu lệnh IF-ELSE-THEN này trong trình kích hoạt MySQL

  2. Tuyên bố IN trong Eloquent

  3. Mã hóa một giá trị bằng hàm AES_ECRYPT của MySQL, sau đó chuyển nó vào một chuỗi URL, sử dụng PHP

  4. Không thể kết nối với máy chủ mysql trên AWS RDS

  5. MySQL Không thể giảm chỉ mục cần thiết trong một ràng buộc khóa ngoại