【问题标题】:insert NULL value in sybase database using python使用python在sybase数据库中插入NULL值
【发布时间】:2014-01-03 08:57:07
【问题描述】:

假设我们有以下 sql 语句:

INSERT INTO myTable VALUES (1,"test")

在我的 python 代码中,第一个值是整数或 NULL。如何使用 python 代码插入NULL 值?

代码sn-p:

    var1 = getFirstValue()
    var2 = getSecondValue()
    qry = "INSERT INTO myTable VALUES (%d,%s)" % (var1,var2)

当 var1 为 None 时,它​​会抛出错误,但我希望插入 NULL。

【问题讨论】:

  • 既然你用 Django 标记了这个问题,为什么你需要手动将任何东西插入到 db 中?只需使用 Django ORM。
  • 我是 django 新手,你能给我指点什么教程,我可以深入了解 django ORM
  • 点击@Bogdan Barbieru 回答中的链接

标签: python sql django null


【解决方案1】:

既然你用标签 Django 标记了这个问题,你必须知道你不只是编写查询并将它们保存在数据库中,Django 会处理这个。

只需查看此处提供的教程:https://docs.djangoproject.com/en/1.6/intro/tutorial01/

由于您提到了 Sybase,您必须从 (https://github.com/sqlanywhere/sqlany-django) 获取 Django 驱动程序并修改 settings.py 项目中的 DATABASES 条目。 (先完成教程)

【讨论】:

    【解决方案2】:

    你可以使用:

    qry = "INSERT INTO myTable VALUES ({0}, {1})".format(var1, var2)
    

    【讨论】:

    • 从你的问题看不清楚你使用的是哪个数据库,所以我只是添加了一个通用的方法。即使您也没有添加错误。你应该更多地解释你的问题。所以我添加了一个像你的问题一样的答案。至少当你只执行这 3 行并且 var1 = None 时,它​​不会抛出错误。
    • 假设var1 = 123 and var2 = None(相当于null),这将返回:INSERT INTO myTable VALUES (123, None) 'None' 将导致它出错
    • @Nicarus 为什么投反对票以及为什么你假设 var2 将是 None 当在他的问题中清楚地写着他想要 var1 = None
    • 他不想 pass None 进入查询 - 他想将它作为 NULL 传入
    【解决方案3】:

    这是一种可能的选择:

    var1 = getFirstValue()
    var2 = getSecondValue()
    
    var2 = "'{0}'".format(var2) if var2 is not None else 'NULL'
    
    qry = "INSERT INTO myTable VALUES ({0},{1})".format(var1,var2)
    

    【讨论】:

    • 我假设并且我很确定他不想输入字符串'NULL'。他想输入NULL的值。
    • 这将输入 NULL 而不是 'NULL'。自己运行并测试它
    • 是的,它输入 NULL 而不是 'NULL'。谢谢尼卡洛斯。
    猜你喜欢
    • 2019-02-22
    • 2011-05-13
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2018-09-30
    • 2021-01-26
    • 2011-09-11
    相关资源
    最近更新 更多