因此,我目前正在使用Amazon API。

amazon = AmazonAPI('mykey', 'mykey', 'bmykey')

products = amazon.search(SearchIndex='Beauty',
                         ResponseGroup='ItemAttributes,OfferFull,OfferListings,Offers,SalesRank,OfferSummary',
                         Sort='salesrank', BrowseNode='3777891')


我正在尝试将结果的某些部分保存到数据库中

类型返回

<class 'amazon.api.AmazonSearch'>


当我运行这个

for p in products:
     print(p.asin)


结果看起来像这样

B004B8AZH0
B00XTAFYKY
B0014P8L9W
B00QZ67ODE
B00ARF42H0
B011YRJ31O


我正在尝试将此结果传递给数据库。

表格栏位-
(INT(11))ID
(VARCHAR(255))ASIN

由于某种原因,我似乎无法将结果传递到数据库中。这是我尝试过的

cur = db.cursor()

for p in products:
    print(p.asin)
    add = """INSERT INTO products(ASIN) VALUES(%s)"""
    cur.execute(add, p.asin)
    db.commit()

cur.close()
db.close()


但返回

query = query % args
TypeError: not all arguments converted during string formatting


尝试运行str(p.asin),但出现相同的错误。

试过这个

cur.execute(“插入产品(ASIN)值(%s)”%p.asin)

但我明白了

_mysql_exceptions.OperationalError: (1054, "Unknown column 'B004B8AZH0' in 'field list'")


还有其他提示可以尝试吗?我似乎无法弄清楚。

最佳答案

您要查找的cursor.execute方法带有两个参数:


带占位符(%s)的查询字符串。不要在占位符周围使用引号。
迭代使用的值,而不是占位符。


您正在传递一个字符串,这意味着execute尝试将字符串的每个字符用作值。因此,只需将您的参数放在列表中:

cur.execute(your_query, [p.asin])


如果您自己进行格式化,则会引入sql注入漏洞。

关于python - 困惑于从Python对象获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42262691/

10-12 23:08