2017-04-20 123 views
0

我有一個包含nvarchar屬性的表。我試圖插入值,有時一些值是NULL。當我嘗試將它插入到數據庫中時,它只插入不帶空值的元組。這裏是我的代碼部分:將NULL值插入到nvarchar中python mysql

self.cursor.execute("INSERT INTO product VALUES (N{0},N{1},N{2},{3})".format(item['name'],item['category'],item['original_price'],item['last_30_days_sales_volume'])) 
self.connection.commit() 

值由以下try..except插入項:

try: 
    item['last_30_days_sales_volume']= ("\'"+self.driver.find_element_by_xpath('...')+"\'") 
except NoSuchElementException, e: 
    item['last_30_days_sales_volume']= None 

任何幫助將非常感激!

+0

只插入元組意味着什麼?它插入的元組中有一些值,它會忽略空值,你可以舉一個例子 – Sanjay

+0

如果我試圖插入一個這樣的項目:('名稱','貓','$ 25',300)它工作正常,我可以在db中找到數據,但是如果我嘗試插入('name',None,'$ 2',20),它不會插入它。 –

+0

錯誤如下:'字段列表'中的未知列'無',但如果我嘗試插入'NULL'而不是None,它將插入字符串'NULL' –

回答

0

經過多次嘗試,我找到了解決方案。傳遞None值不起作用,但在開始時傳遞值爲'NULL'的值(這在utf-8中是必需的),在數據庫中保存具有NULL值的所有元組,而不是'NULL'字符串。因此我的查詢最後是:

self.cursor.execute("INSERT IGNORE INTO product VALUES (N'{0}',{1},{2},{3})".format(item['name'],('N\''+item['category']+"\'" if item['category'] else 'NULL'),('N\''+item['original_price']+"\'" if item['original_price'] else 'NULL'),item['last_30_days_sales_volume'].encode('utf-8')))