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)
数字のみをフォーム フィールドに入力すると、データベースにコミットされます (新しいデータを追加します)。電子メール = aa tel = ダダ
(この方法にはセキュリティリスクがあることを知っています)
ここにコード全体があります(クエリが最後にどのように見えるかを確認するためだけに 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()
お時間をいただき、ありがとうございました。