我开始用 Python 编写脚本,但遇到了一个奇怪的问题。
我正在尝试将一些值插入 mysql 数据库。数据库字段为 varchar、utf-8 unicode
使用 Python 3.2 和 wamp 服务器 2.2(apache 2.2.21,mysql 5.5.20)
如果我尝试 print(ime)、print(prezime) 等,它会从另一个页面打印表单的值,所以我得到了正确的值。
如果我将 sql 语句写为:
"INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES ("aa","aa","aa","aa")"
它将这些值插入数据库
如果我写:
sql = "INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES (%s,%s,%s,%s)",(ime,prezime,email,tel)
它不起作用
最后,如果我放
sql = "插入 Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) 值 (%s,%s,%s,%s)"%(ime,prezime,email,tel)
如果我只在表单字段中输入数字,它将提交到数据库(添加新数据) ime= 21 prezime= 232 email =123 tel=123 如果我输入任何其他内容,例如字母,它不会向数据库添加新行 ime= smth prezime=blabla电子邮件 = aa 电话 =dada
(我知道这种方法有安全风险)
这是整个代码(我放了 print(sql) 只是为了看看我的查询最后是什么样子)
#!c:\python32\python.exe
import MySQLdb
import cgi
print ("Content-type: text/html\n\n")
form = cgi.FieldStorage()
ime =form["ime"].value
prezime = form["prezime"].value
email= form["email"].value
tel = form["tel"].value
print(ime)
db = MySQLdb.connect("localhost","root","","biblioteka" )
cursor = db.cursor()
sql = "INSERT INTO Clanovi(CL_Ime,CL_Prezime, CL_Email, CL_Tel) VALUES (%s,%s,%s,%s)"%(ime,prezime,email,tel)
print(sql)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
db.close()
感谢您的时间和帮助。