MySQL中的Python变量:INSERT INTO%s

时间:2015-02-20 16:57:34

标签: python mysql

这个问题已被问到bevor(here),但没有答案对我有用,不幸的是我不允许添加评论,因为我在这里是新的。 我不知道还有什么比再问一遍这个问题,对不起,请告诉我正确的方法。

我想将Python变量插入由Python变量命名的MySQL表中。 我想通过以下方式创建表格:

curs.execute ("""CREATE TABLE IF NOT EXISTS %s LIKE table""" %(today))

我还想出插入这样的值:

curs.execute (
        """ INSERT INTO table (column)
            VALUES (%s) """,
            (variable))

现在我试过

today = "table_name"
variable = "name"
curs.execute (
        """ INSERT INTO %s (column)
            VALUES (%s) """,
            ( table, variable ))

我会收到此错误:

(1064,"您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在#table;' table_name'(列附近)使用正确的语法......'在第1行")

我也尝试过:

today = "table_name"
variable = "name"
curs.execute (
            """ INSERT INTO %s (column)
                VALUES (%s) """
                % ( table, variable ))

我会收到此错误:

(1054,"未知列'名称'在'字段列表'")

我猜这些字符串有问题......

感谢您的回答!

3 个答案:

答案 0 :(得分:1)

尝试用%s替换?并让sqlite处理插入。 (还有助于防止Web应用程序中的SQL注入攻击)

table_name = "today"
variable = "name"
curs.execute ("INSERT INTO ? (column) VALUES (?)",(table_name, variable))

答案 1 :(得分:0)

尝试:

today = "table_name"
variable = "name"
curs.execute (
        """ INSERT INTO :table_name (column)
            VALUES (:variable_name) """,
            {'table_name': today, 'variable_name': variable})

答案 2 :(得分:0)

你已经在你的第三个,而不是工作的代码片段中混淆了你的变量。而是尝试:

table_name = "today"
variable = "name"
curs.execute (
    """ INSERT INTO %s (column)
        VALUES (%s) """,
        ( table_name, variable ))

这将创建一个名为“Today”的表,其中一列名为“column”,其中一个数据值为“name”。 为此,您需要先创建一个可以使用此列的表。 所以你的创建代码需要改变:

"""create table "today" ("column" varchar2(16BYTE), *add extra columns here if you wish*)"""