Python MySQLdb 在一行中多次使用 %S
Python MySQLdb using %S multiple times in one line
Date = self.Date.selectedDate()
Date = QDate.toPyDate(Date)
db = MySQLdb.connect(host="localhost", user="root", passwd="Benjamin217", db="Auski")
c = db.cursor()
vins = "SELECT Sum(ChildrenNum) FROM OrderDetails WHERE CheckInDate <= '%s' AND CheckOutDate > '%s'"
vins2 = "SELECT Sum(AdultNum) FROM OrderDetails WHERE CheckInDate <= '%s' AND CheckOutDate > '%s'"
c.execute(vins, [Date], [Date])
ChildrenNum = c.fetchone()[0]
c.execute(vins2, [Date], [Date])
AdultNum = c.fetchone()[0]
print(ChildrenNum + AdultNum)
c.close()
db.close()
给出错误:
c.execute(vins, [Date], [Date])
TypeError: execute() 接受 2 到 3 个位置参数,但给出了 4 个
我非常想 select 我输入的日期介于两者之间的所有条目。我想知道是否有人有更简洁的方法来执行此操作,并且效果更好。因为我还没有找到解决这个问题的方法。
您将值作为单独的单项列表传递,而不是作为单个列表传递。这会起作用:
c.execute(vins, [Date, Date])
Date = self.Date.selectedDate()
Date = QDate.toPyDate(Date)
db = MySQLdb.connect(host="localhost", user="root", passwd="Benjamin217", db="Auski")
c = db.cursor()
vins = "SELECT Sum(ChildrenNum) FROM OrderDetails WHERE CheckInDate <= '%s' AND CheckOutDate > '%s'"
vins2 = "SELECT Sum(AdultNum) FROM OrderDetails WHERE CheckInDate <= '%s' AND CheckOutDate > '%s'"
c.execute(vins, [Date], [Date])
ChildrenNum = c.fetchone()[0]
c.execute(vins2, [Date], [Date])
AdultNum = c.fetchone()[0]
print(ChildrenNum + AdultNum)
c.close()
db.close()
给出错误:
c.execute(vins, [Date], [Date])
TypeError: execute() 接受 2 到 3 个位置参数,但给出了 4 个
我非常想 select 我输入的日期介于两者之间的所有条目。我想知道是否有人有更简洁的方法来执行此操作,并且效果更好。因为我还没有找到解决这个问题的方法。
您将值作为单独的单项列表传递,而不是作为单个列表传递。这会起作用:
c.execute(vins, [Date, Date])