无法使用python将变量值插入到mysql数据库中

时间:2018-01-09 14:54:12

标签: python mysql

最近,我有一个项目需要将变量值保存到数据库中。

我想编写这样的代码:

如果我想输入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'")

有没有人可以帮我解决这个问题?非常感谢。

PS。我引用的代码是https://www.packtpub.com/mapt/book/big_data_and_business_intelligence/9781849510189/3/ch03lvl1sec24/using-user-defined-variables

1 个答案:

答案 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))

这本书似乎是在推荐不安全的做法。你应该立即停止阅读。