mysql - 适用于 Python 的格式正确的 Mysql 查询

标签 mysql python-2.7

我正在为 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 方法为cardnamesetname 采用单独的参数,而不是包含两者的列表。所以,而不是:

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/

相关文章:

mysql - 将 BLOB 转换为 sql 中的文本

python-2.7 - 使用 tweepy 向最新关注者发送直接消息

python - 我们如何才能使 __future__ 进口全局化?

php - 如何根据同一 SELECT 中的不同 ID 从表中获取两个值

python - 在 Windows 到 Linux/OSX 中用 Python 交叉编译

python - key 错误 : 0L building boxplot

Python requests_ntlm导入错误

mysql - 子查询在 MySQL 过程中返回多于 1 行

mysql - 即使条件不是我,也选择一些数据

php - Laravel 5.6 永久更改运行时中的数据库连接