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

euoag5mw  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(327)

最近,我有一个项目需要将变量值保存到数据库中。
我想编写这样的代码:
如果我想输入 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'") 有人能帮我解决这个问题吗?谢谢。
另外,我指的代码是https://www.packtpub.com/mapt/book/big_data_and_business_intelligence/9781849510189/3/ch03lvl1sec24/using-user-defined-variables

p3rjfoxz

p3rjfoxz1#

不能使用字符串替换。使用参数。

sql = """INSERT INTO table1(username,gender,age,password,id) VALUES(%s,%s,%s,%s,%s)"""
cursor.execute(sql, (urn,gdr,agex,psd,idx))

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

相关问题