我正在为 mysql 查询的格式设置而苦苦挣扎,我希望您能为我指出正确的方向。这是查询
sql = "SELECT price FROM inventory WHERE card_name = %s AND card_set = %s"
sql_rare = "SELECT rarity FROM inventory WHERE card_name = %s AND card_set = %s"
sql_count = "SELECT count(*) FROM inventory WHERE card_name = %s AND card_set = %s
当我运行以下代码时,使用 sql_count 查询,我收到一条错误消息:
File "C:\Users\Spencer\Desktop\Python Programs\PythonMTG\Revision3AutoAndManual\51515\magicassistantcsv.py", line 264, in output_card for row in getmtgprice.query(sql_count, ([card_name, set_name])): TypeError: query() takes exactly 4 arguments (3 given)
这里是产生这个错误的代码:
getmtgprice = PriceCheck()
for row in getmtgprice.query(sql_count, ([card_name, set_name])):
if row[0] ==0:
priced_card = '0.00'
这是 PriceCheck 函数:
class PriceCheck(object):
def __init__(self):
self.conn = MySQLdb.connect(host='localhost', user='root', passwd='', db='mscan')
self.c = self.conn.cursor()
def query(self, arg, cardname, setname):
self.c.execute(arg, cardname, setname)
return self.c
def __del__(self):
self.conn.close()
你看到我错在哪里了吗?
最佳答案
您的query
方法为cardname
和setname
采用单独的参数,而不是包含两者的列表。所以,而不是:
for row in getmtgprice.query(sql_count, ([card_name, set_name])):
你应该:
for row in getmtgprice.query(sql_count, card_name, set_name):
关于mysql - 适用于 Python 的格式正确的 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30382017/