我尝试了所有可能的方法。我在字符串中包含了backQuotes,如堆栈中的建议,但没有任何效果。它像往常一样重复错误。 我也尝试了一些在其他python文件中工作的查询,但它仍然显示相同。即使它不起作用,我也尝试使用没有连字符的字符串查询。我不知道这里的问题是什么。
import MySQLdb
import sys
from PyQt4 import QtCore, QtGui, uic
qtCreatorFile = "Studisplay.ui" # Enter file here.
Ui_MainWindow1, QtBaseClass = uic.loadUiType(qtCreatorFile)
class stuDisplay(QtGui.QMainWindow, Ui_MainWindow1,QtGui.QTableWidget):
def __init__(self,ID):
#super(stuDisplay, self).__init__(parent)
QtGui.QMainWindow.__init__(self)
Ui_MainWindow1.__init__(self)
QtGui.QWidget.__init__(self)
self.setupUi(self)
obj = MySQLdb.connect("localhost", "root", "1234567", "python")
#The value of ID here is 14-VEC-244 I also tried `14-VEC-244` but did not work
sql = 'SELECT MEMname FROM Borrowed WHERE MemberID ='+ str(ID)
cursor = obj.cursor()
cursor.execute(sql)
name=cursor.fetchone()
print name
我收到此错误:
Traceback(最近一次调用最后一次):文件 " /home/gautham/PycharmProjects/LIBALERT/Login.py" ;,第105行,在 pushButton_clicked self.call = StuSecond.stuDisplay(StuID)File" /home/gautham/PycharmProjects/LIBALERT/StuSecond.py" ;,第22行,in 的初始化 cursor.execute(sql)File" /usr/lib/python2.7/dist-packages/MySQLdb/cursors.py" ;,第226行,in 执行 self.errorhandler(self,exc,value)File" /usr/lib/python2.7/dist-packages/MySQLdb/connections.py" ;,第36行,in defaulterrorhandler 提高误差值 _mysql_exceptions.OperationalError:(1054,"未知列' VEC'在' where子句'")
答案 0 :(得分:2)
您将字符串传递到WHERE
子句中,因此必须在传递给数据库的查询字符串中引用 ,如下所示:
sql = "SELECT MEMname FROM Borrowed WHERE MemberID = '" + str(ID) + "'"
使完成的字符串看起来像
sql =" SELECT MEMname FROM Borrowed WHERE MemberID =' 14-VEC-244'"
(请注意,单引号是"转发"引号,而不是反引号。)
这对于准备好的陈述也是一个很好的应用;不幸的是我不熟悉pyqt,所以不能在那里建议你。