无法在datetime字段中使用python和mysql插入None

时间:2013-01-28 15:44:23

标签: python mysql datetime insert null

考虑以下代码: 第一个查询不起作用而第二个查询不起作用。 问题是......因为我需要事先通过函数编写一个查询,这个函数返回一个变量'val'。所以我需要让第一个查询起作用。第二个查询仅通过示例添加,以显示在按字面意思使用'val'的内容时会发生什么。 请帮忙! 所以,我想插入一个日期时间,但也可以接受“无”。目前的错误是:

    query = query % db.literal(args)
TypeError: not enough arguments for format string

现在脚本:

#!/usr/bin/python

import MySQLdb as mdb

def prepare():
# Assume a database named 'db_test'
    conn = mdb.connect(host   = 'localhost', \
                       user   = 'test',      \
                       passwd = 'test',      \
                       db     = 'db_test')

    cur = conn.cursor()

    cur.execute("DROP TABLE IF EXISTS TBL_TEST")
    cur.execute("CREATE TABLE TBL_TEST(Moo1 DATETIME, Moo2 DATETIME)")

    return cur

if __name__ == '__main__':
    qry = "INSERT INTO TBL_TEST (Moo1, Moo2) VALUES (%s, %s)"
    val = "('2012-04-03 08:40:39', None)"

    cur = prepare()
    cur.execute(qry, val) # NOK
    cur.execute("INSERT INTO TBL_TEST (Moo1, Moo2) VALUES (%s, %s)", ('2012-04-03 08:40:39', None)) # OK

相信我 - 我搜索了世界但没有任何成功.. 提前谢谢!

1 个答案:

答案 0 :(得分:3)

你的val是一个字符串,它应该是一个元组:

val = ('2012-04-03 08:40:39', None)