Python pymysql INSERT INTO插入空值

时间:2014-10-12 23:06:28

标签: python sql pymysql

我试图在表格中插入一些值,虽然正在创建行,但是没有记录这些值。这是我的代码:

for i in range(2,6):
    for team in ul[i]:
        name = team.string #string from html element
        print(name) #this works just fine, and prints the desired name
        cur.execute("INSERT INTO teams (Name) VALUES(name)")
conn.commit()

现在如果我改为放置VALUES("Test String"),它就可以了,添加了30行(我想要的是),所有这些都是名称:"测试字符串"。

然而,当我输入name变量时,也会添加行,但列值为空。将字符串放入的列I VARCHAR。在Python字符串变量的情况下,我是否知道如何解释SQL语​​句?

1 个答案:

答案 0 :(得分:1)

似乎SQL语句是一个简单的字符串,并且没有插入name变量。

也许你可以这样做:

sql = """INSERT INTO teams (Name) VALUES({0})""".format(json.dumps(name))
cur.execute(sql)

我使用json.dumps(myVar)来转义特殊字符,例如引号等......可能会破坏SQL插入语句。

有时打印出SQL语句并尝试在客户端(例如MySQL Workbench)中运行它是有帮助的,以便查看生成语法正确语句所需的更改(如果有)。