0

次のコードを検討してください。最初のクエリは機能しませんが、2 番目のクエリは機能します。問題は...関数を介して事前にクエリを作成する必要があるため、この関数は変数を「val」として返します。したがって、最初のクエリを機能させる必要があります。2 番目のクエリは、'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

私を信じてください-私は世界を検索しましたが、成功しませんでした..事前に感謝します!

4

1 に答える 1

3

あなたvalは文字列です、それはタプルでなければなりません:

val = ('2012-04-03 08:40:39', None)
于 2013-01-28T15:47:35.200 に答える