【问题标题】:Insert NULL Values into nvarchar python mysql将 NULL 值插入 nvarchar python mysql
【发布时间】:2017-04-21 10:22:24
【问题描述】:

我有一个带有一些 nvarchar 属性的表。我正在尝试将值插入其中,有时某些值是 NULL。当我尝试将它插入数据库时​​,它只插入没有空值的元组。这是我的代码的一部分:

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

任何帮助将不胜感激!

【问题讨论】:

  • 仅插入元组意味着什么?它插入带有一些值的元组,它忽略空值,你能举个例子吗
  • 如果我尝试插入这样的项目: ('name','cat','$25', 300) 它工作正常,我可以在数据库中找到数据,但如果我尝试insert ('name', None, '$2', 20) 它没有插入它。
  • 错误如下:'字段列表'中的未知列'None',但如果我尝试插入'NULL'而不是None,它会插入字符串'NULL'

标签: python mysql


【解决方案1】:

经过多次尝试,我找到了解决方案。传递 None 值不起作用,但传递值 'NULL' 而开头没有 N,这是 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')))

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多