使用MySQL的插入語句時,忽然發現,插入非數字的參數時,數據庫會報錯
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column '2ddd22' in 'field list'
cloumn后面為要插入的參數
import mysql.connector class MysqlGroup(object): def __init__(self,host,user,password,database,charset): self.mydb=mysql.connector.connect(host = host,user = user,port = 3306,password = password,database = database,charset = charset,buffered = True) self.mycursor=self.mydb.cursor(buffered = True) def mysql_increase(self, surface_name, column_name1, column_name2, parameter1, parameter2): self.mycursor.execute( "INSERT INTO %s (%s, %s) VALUES (%s, %s)" % (surface_name,column_name1, column_name2, parameter1, parameter2)) self.mydb.commit() con1 = MysqlGroup('數據庫地址', '數據庫用戶名', '數據庫密碼', '數據庫名', '編碼方式') jk = con1.mysql_increase('data','user', 'password','2ddd22','3333')
報錯原因,數據庫錯誤的把要插入的值識別為列名
解決辦法在SQL語句中的要插入的值兩邊加上單引號',代碼如圖
import mysql.connector
class MysqlGroup(object):
def __init__(self,host,user,password,database,charset):
self.mydb=mysql.connector.connect(host = host,user = user,port = 3306,password = password,database = database,charset = charset,buffered = True)
self.mycursor=self.mydb.cursor(buffered = True)
def mysql_increase(self, surface_name, column_name1, column_name2, parameter1, parameter2):
self.mycursor.execute(
"INSERT INTO %s (%s, %s) VALUES ('%s', '%s')" % (surface_name,column_name1, column_name2, parameter1, parameter2))
self.mydb.commit()
con1 = MysqlGroup('數據庫地址', '數據庫用戶名', '數據庫密碼', '數據庫名', '編碼方式')
jk = con1.mysql_increase('data','user', 'password','2ddd22','3333')
缺點,加了單引號之后,SQL語句就無法識別參數Null之類的關鍵字,會將其當做字符處理。使用關鍵字需要直接寫入SQL語句。如
import mysql.connector
class MysqlGroup(object):
def __init__(self,host,user,password,database,charset):
self.mydb=mysql.connector.connect(host = host,user = user,port = 3306,password = password,database = database,charset = charset,buffered = True)
self.mycursor=self.mydb.cursor(buffered = True)
def mysql_insert_null(self, surface_name, column_name1, column_name2):
self.mycursor.execute(
"INSERT INTO %s (%s, %s) VALUES (Null, Null)" % (surface_name,column_name1, column_name2))
self.mydb.commit()
con1 = MysqlGroup('數據庫地址', '數據庫用戶名', '數據庫密碼', '數據庫名', '編碼方式')
jk = con1.mysql_increase('data','user', 'password')
往data表中user列和password列插入空值