Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymysql插入到插入空值中_Python_Sql_Pymysql - Fatal编程技术网

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注入提供了机会。