Python pymysql插入到插入空值中
我试图在表中插入一些值,尽管创建了行,但没有记录这些值。这是我的密码:Python pymysql插入到插入空值中,python,sql,pymysql,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)
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()
现在,如果我把值(“Test String”)
改为,它会工作,添加30行(我想要的),所有行的名称都是:“Test String”
然而,当我输入
name
变量时,行也会被添加,但列值是空的。我将字符串放入的列是VARCHAR
。在Python字符串变量的情况下,SQL语句是如何解释的?是否有什么我不知道的地方?看来SQL语句是一个简单的字符串,并且没有插入变量
也许你可以这样做:
sql = """INSERT INTO teams (Name) VALUES({0})""".format(json.dumps(name))
cur.execute(sql)
我使用json.dumps(myVar)
来转义特殊字符,例如引号等。。。这可能会破坏SQL insert语句
有时,打印SQL语句并尝试在客户端(例如MySQL Workbench)中运行它会很有帮助,以便查看生成语法正确的语句所需的更改(如果有)。这很有效,谢谢!我发现我的
name
变量的类型是
,因此这可能就是查询无法识别它的原因考虑到name
来自HTML表单或类似的内容,您确实应该使用查询参数进行插入。字符串格式为SQL注入提供了机会。