2017-04-20 96 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')))