TypeError:“str”对象在Python上不可调用

2024-06-01 20:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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'对象不可调用 你愿意帮我修正这个错误吗?我会很感激的。:)谢谢你,请原谅我英语不好。在


Tags: iddbdatetimetimestatuscursorrfidrow
1条回答
网友
1楼 · 发布于 2024-06-01 20:32:34

您在两个地方错误地尝试格式化SQL字符串:

telat=“插入presensi(ID_Pegawai,Nama_Pegawai,Jam_Masuk,Status)值(%s,%s,%s,'Terlambat')(strID_Pegawai,strNama_Pegawai,时间) 当前执行(电话)

以及:

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)

试图格式化SQL字符串时出错:

^{pr2}$

你的意思可能是:

>>> s = "%s %s %s" % ("foo", "bar", "baz")
>>> s
'foo bar baz'

但是,为了帮助防止对应用程序的SQL注入攻击,您应该执行以下操作:

telat="INSERT INTO  presensi (ID_Pegawai, Nama_Pegawai, Jam_Masuk, Status) VALUES (?, ?, ?, 'On Time')"
cur.execute(telat, strID_Pegawai, strNama_Pegawai, time)

参见:Bobby Tables: A guide to preventing SQL Injection和相关的SO问题Protecting against SQL injection in python

尽管社区对这个问题投了反对票,而且“势均力敌”,但我觉得有义务提供这个答案,以帮助防止Python web应用程序容易受到来自管理不善的常见攻击载体的攻击。“

不要使用"INSERT|SELECT|UPDATE|DELETE ... %s %s %s" % (...)格式!在

相关问题 更多 >