import MySQLdb
from datetime import datetime
ID_RFID=raw_input("Masukkan nomor: ")
time=datetime.now().strftime('%H:%M:%S')
print time
db=MySQLdb.connect(host="localhost", user="root", passwd="", db="rfid")
cursor=db.cursor()
cursor.execute("SELECT ID_Pegawai, Nama_Pegawai, Jabatan FROM data_pegawai WHERE ID_RFID='%s'" %(ID_RFID))
data=cursor.fetchall()
for row in data:
ID_Pegawai=str(row[0])
Nama_Pegawai=str(row[1])
Jabatan=str(row[2])
strID_Pegawai=''.join(ID_Pegawai)
strNama_Pegawai=''.join(Nama_Pegawai)
print "ID Pegawai= " +ID_Pegawai
print "Nama Pegawai= " +Nama_Pegawai
print "Jabatan= " +Jabatan
if time>'08:00:00':
telat="INSERT INTO presensi (ID_Pegawai, Nama_Pegawai, Jam_Masuk, Status) VALUES (%s, %s, %s, 'Terlambat')" (strID_Pegawai, strNama_Pegawai, time)
cur.execute(telat)
print ("Status Anda= Anda Datang Terlambat")
else:
telat="INSERT INTO presensi (ID_Pegawai, Nama_Pegawai, Jam_Masuk, Status) VALUES (%s, %s, %s, 'On Time')" (strID_Pegawai, strNama_Pegawai, time)
cur.execute(telat)
print ("Status Anda= Anda Datang Tepat Waktu")
我有类似Python的代码,当我运行这些代码时,我发现了一个错误:TypeError:'str'对象不可调用 你愿意帮我修正这个错误吗?我会很感激的。:)谢谢你,请原谅我英语不好。在
您在两个地方错误地尝试格式化SQL字符串:
telat=“插入presensi(ID_Pegawai,Nama_Pegawai,Jam_Masuk,Status)值(%s,%s,%s,'Terlambat')(strID_Pegawai,strNama_Pegawai,时间) 当前执行(电话)
以及:
试图格式化SQL字符串时出错:
^{pr2}$你的意思可能是:
但是,为了帮助防止对应用程序的SQL注入攻击,您应该执行以下操作:
参见:Bobby Tables: A guide to preventing SQL Injection和相关的SO问题Protecting against SQL injection in python
尽管社区对这个问题投了反对票,而且“势均力敌”,但我觉得有义务提供这个答案,以帮助防止Python web应用程序容易受到来自管理不善的常见攻击载体的攻击。“
不要使用
"INSERT|SELECT|UPDATE|DELETE ... %s %s %s" % (...)
格式!在相关问题 更多 >
编程相关推荐