python在mysql中插入null空值
sql = “INSERT INTO MROdata (MmeUeS1apId) VALUES (%s)”%‘NULL'
%s沒有引號,可以將“null"中null寫進數(shù)據(jù)庫,達到NULL值效果。
%s加引號 values就是字符串,導(dǎo)致類型錯誤,插入錯誤。
sql = “INSERT INTO MROdata (MmeUeS1apId) VALUES (‘%s')”%‘NULL'
補充:數(shù)據(jù)庫中的空值與NULL的區(qū)別以及python中的NaN和None
數(shù)據(jù)庫里面的”空值”有兩種:空字符(“”)、空值(NULL)。
兩種存儲方式在數(shù)據(jù)庫中都很常見,實際中根據(jù)業(yè)務(wù)或者個人習慣可以用這兩種方式來存儲“空值”。
-- 創(chuàng)建表test create table `test` ( `id` int not null , `name` varchar(255) null , `date` timestamp null , `class` varchar(255) null ); insert into test (id,name,date,class) values (1,'張三','2017-03-01','a班'); insert into test (id,name,date,class) values (2,'李四','2017-03-02',''); insert into test (id,name,class) values (3,'王五','c班'); select * from test;
select count(date),count(class) from test;
看到這里應(yīng)該明白了,直觀看空字符和NULL的區(qū)別在于,在做count計算的時候,空字符也會被計算在里面,而NULL不會。有些同學(xué)在使用where is null 和is not null 的時候也要注意數(shù)據(jù)庫中的“空值”是空字符還是NULL。
不然統(tǒng)計結(jié)果可能并不是你想要的。
平時有些數(shù)據(jù)是需要借助python 來處理的,我們來看看python獲取數(shù)據(jù)的時候有哪些需要注意的。
1. 一種是把數(shù)據(jù)從MYSQL 中導(dǎo)出到txt或者csv,然后本地讀??;
2. 另一種是python直接鏈接數(shù)據(jù)庫,讀取數(shù)據(jù);
先看第一種:導(dǎo)出到csv,python 讀取
第二種:
1、第一種把數(shù)據(jù)從MYSQL導(dǎo)出后,python讀取時,空值即為NULL;
2、第二種鏈接數(shù)據(jù)庫后,python能讀取表結(jié)構(gòu),數(shù)據(jù)庫的NULL對應(yīng)列表中的None以及pandas中的NaN(如果字段類型是時間,則為NaT)。而數(shù)據(jù)庫中的空字符,則被識別為空字符。
NULL(數(shù)據(jù)庫)=None(python列表)=NaN(pandas)
空字符(數(shù)據(jù)庫)=空字符(python列表)=空字符(pandas)
從csv中獲取數(shù)據(jù)時:空值(csv)=NULL(數(shù)據(jù)庫)=NaN(pandas)
轉(zhuǎn)為csv數(shù)據(jù)時:數(shù)據(jù)庫中的NULL\空字符和pandas中的NaN\空字符,都變成csv中的空值
在python處理完數(shù)據(jù)后,往數(shù)據(jù)庫寫數(shù)據(jù)的時候也一樣。注意注意!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
標簽:西寧 浙江 昆明 錫林郭勒盟 懷化 文山 梅州 石家莊
巨人網(wǎng)絡(luò)通訊聲明:本文標題《python 在mysql中插入null空值的操作》,本文關(guān)鍵詞 python,在,mysql,中,插入,null,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。