使用Python插入变量MySQL,不工作

时间:2013-05-12 10:59:17

标签: python mysql variables python-2.7 insert

我想将变量bobdummyVar插入到我的表logger中。现在我可以告诉所有我应该做的就是,以下我所拥有的,但是这根本不会在我的表中插入任何东西。如果我硬编码应该写的内容(使用'example'然后它将示例写入表中,所以我的连接和插入语法在这一点上是正确的)。任何帮助都会受到赞赏!

conn = mysql.connector.connect(user='username', password='password!',
                              host='Host', database='database')

cursor = conn.cursor()

bob = "THIS IS AN EXAMPLE"
dummyVar = "Variable Test"

loggit = ("""
        INSERT INTO logger (logged_info, dummy)
        VALUES
            (%s, %s)
    """, (bob, dummyVar))

cursor.execute(loggit)
conn.commit()

我也试过这个:

loggit = ("""
        INSERT INTO logger (logged_info, dummy)
        VALUES
            (%(bob)s,(Hello))
    """, (bob))

bob = "THIS IS AN EXAMPLE"
dummyVar = "Variable Test"

loggit = ("""
        INSERT INTO logger (logged_info, dummy)
        VALUES
            (%s, %s)
    """, (bob, dummyVar))

cursor.execute(loggit, (bob, dummyVar))
conn.commit()


cursor.execute(loggit, (bob, dummyVar))

conn.commit()

1 个答案:

答案 0 :(得分:2)

您需要将SQL语句和参数作为单独的参数传递:

cursor.execute(loggit[0], loggit[1])

或使用variable argument syntax (a splat, *)

cursor.execute(*loggit)

您的版本尝试传入包含SQL语句的元组并将参数绑定为唯一参数,其中.execute()函数期望只找到SQL语句字符串。

通常将两者分开并且可能只将SQL语句存储在变量中:

loggit = """
        INSERT INTO logger (logged_info, dummy)
        VALUES
            (%s, %s)
    """
cursor.execute(loggit, (bob, dummyVar))