所以我目前正在摆弄亚马逊 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 注入(inject)漏洞。
关于python - 对从Python中的对象获取值感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262691/