insert_basic = '""' + '"INSERT INTO info VALUES (' + "'" + testid + "','" + username + "','" + fullname + "','" + firstnumber + "','" + secondnumber + "','" + floatnumber + "','" + posts + "','" + country + '","' + bio + '","' + link + '");'
cur.execute(insert_basic)
try:
db.commit()
except:
db.rollback()
cur.execute("""SELECT * FROM basic;""")
print cur.fetchall()
您好,我做了很多研究,但我似乎无法获得提交到 SQL 的正确语法。有些变量是整数,有些是字符串,其中一个是 float 。
最佳答案
这就是 parameterized queries用于:
parameters = (testid, username, fullname, firstnumber, secondnumber, floatnumber, posts, country, bio, link)
query = """
INSERT INTO
info
VALUES
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
cur.execute(query, parameters)
当您这样做时,您将让 MySQL 数据库驱动程序自动处理 Python 和 MySQL 之间的类型转换。
而且,您也在保护自己免受 SQL injection attacks 的侵害。这很容易应用于您的初始代码,您可以在其中字符串连接查询。
<小时/>我还会在这种情况下明确指定表列名称:
INSERT INTO
info
(column_name1, column_name2, ...)
VALUES
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
关于python - 使用 python 将许多变量附加到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376123/