mySQL 要避免的字段名称标题

mySQL Field Name Titles to avoid

我的变量值来自编辑后的网格单元格。该功能有效,但编辑的字段名称名为“读取”。我通过更改列名修复了它,但我很好奇为什么这是一个错误,如果有任何其他我应该避免的字段名称标题。

Message=(1064, "您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在附近使用的正确语法'Read = 'ALL' where User_ID = 'j_adams58'' at line 1")

Table 字段

| User_ID |密码 |阅读 |编辑 |

 def onCellChanged(self,event):   
        #Establish connection
        self.connect_mysql()

        #Update database
        key_id =   str(self.GetCellValue(event.GetRow(),1))  
        target_col = str(self.GetColLabelValue(event.GetCol()))
        key_col = str(self.GetColLabelValue(1))                                     
        nVal =  self.GetCellValue(event.GetRow(),event.GetCol())
        sql_update = f"""Update {tbl} set {target_col} = %s where {key_col} = %s"""
        row_data = ''
       
        self.cursor.execute(sql_update, (nVal, key_id,))
        
       #Close connection
        self.close_connection()

Read 是 MySQL 中的保留关键字,所以你不应该将它用作列名,但如果你真的需要,你应该可以通过将单个它周围的反引号,如 `Read`,但同样,它的风格非常糟糕,你不应该这样做。您还应该避免使用其他关键字,但通常最好先尝试 运行 在 SQL 中的查询,这样您就可以检查是否可以。

参见:https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8-0-detailed-R