標籤:try 忽略 prim tab 使用 handle lin ldb pac
在MYSQL中,運行INSERT INTO 插入語句中的欄位是否一定要把該表的欄位全部填上?
例如表tab_name有(col1,col2,col3,col4)4個欄位。
只填你需要添的,就要把列名寫上values後對應列值,
文法:insert into tab_name (col1,col2,col3) values(val1,val2,val3);
如果你想省略列名,那就要把所有欄位的值都填上了,
文法:insert into tab_name values(val1,val2,val3,val4);
MySQL資料庫,插入重複資料
sql = "INSERT INTO test_c(id,name,sex)values(%s,%s,%s)" param = (1,‘AJ‘,‘MAN‘) n = cursor.execute(sql,param) db.commit()
當我們使用普通的 “INSERT INTO" 插入資料,如果資料有重複就會有報錯:
提示的是索引值重複
Traceback (most recent call last): File "D:/python/tongbu_py/test.py", line 14, in <module> n = cursor.execute(sql,param) File "D:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute self.errorhandler(self, exc, value) File "D:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.IntegrityError: (1062, "Duplicate entry ‘1-AJ-MAN‘ for key ‘PRIMARY‘")
我們可以使用另外2個傳入方法: ”INSERT IGNORE INTO 和 REPLACE INTO“:
INSERT IGNORE會忽略資料庫中已經存在的資料,如果資料庫沒有資料,就插入新的資料,如果有資料的話就跳過這條資料。這樣就可以保留資料庫中已經存在資料,達到在間隙中插入資料的目的
REPLACE INTO 如果存在primary 或 unique相同的記錄,則先刪除掉。再插入新記錄。
Python操作MySQL資料庫