0

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

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变量时,行也被添加,但列值是空的。我将字符串放入的列是VARCHAR. 在 Python 字符串变量的情况下,SQL 语句是如何解释的,有什么我不知道的吗?

4

1 回答 1

1

看起来 SQL 语句是一个简单的字符串,并且name没有将变量插入其中。

也许你可以做这样的事情:

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

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

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

于 2014-10-12T23:35:16.313 回答