最近,我有一个项目需要将变量值保存到数据库中。
我想编写这样的代码:
如果我想输入username="Jonh", gender="Male", age=23, password="123456789", id="11111111"
然后代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
import sys
db = MySQLdb.connect("140.120.31.124","usr1","606","testdb",port=3306 )
cursor = db.cursor()
urn="Jonh"
gdr="male"
agex="23"
psd="123456789"
idx="11111111"
sql = """INSERT INTO table1(username,gender,age,password,id) VALUES(%s,%s,%s,%s,%s)""" %(urn,gdr,agex,psd,idx)
#sql="""INSERT INTO table1(username,gender,age,password,id) VALUES("Jonh","male","23","123456789","11111111")"""
try:
cursor.execute(sql)
db.commit()
except Exception as inst:
db.rollback()
print inst
db.close()
我设置的数据库结构是:
username varchar(50) utf8_unicode_ci
gender varchar(50) utf8_unicode_ci
age int(2)
password varchar(20) utf8_unicode_ci
id varchar(8) utf8_unicode_ci
但是,它总是显示错误 - > (1054, "Unknown column 'Jonh' in 'field list'")
有没有人可以帮我解决这个问题?非常感谢。
答案 0 :(得分:2)
您不得使用字符串替换。使用参数。
sql = """INSERT INTO table1(username,gender,age,password,id) VALUES(%s,%s,%s,%s,%s)"""
cursor.execute(sql, (urn,gdr,agex,psd,idx))
这本书似乎是在推荐不安全的做法。你应该立即停止阅读。