在Python中如何从对象中获取值不清楚

2024-09-28 22:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我目前正在使用amazonapi。你知道吗

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))阿辛

由于某种原因,我似乎不能把结果传给数据库。我试过了

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),但我得到了相同的错误。你知道吗

试过这个

你知道吗当前执行(“插入产品(ASIN)值(%s)”%p.ASIN)

但我明白了

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

还有其他的建议吗?我好像想不通。你知道吗


Tags: inadd数据库amazonforclosedbquery
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:41

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

  1. 带有占位符(%s)的查询字符串。不要在占位符周围使用引号。你知道吗
  2. 用来代替占位符的值的iterable。你知道吗

您传递了一个字符串,这意味着execute试图使用字符串的每个字符作为值。所以只要把你的论点放在一个列表里:

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

如果您自己进行格式化,就会引入sql注入漏洞。你知道吗

相关问题 更多 >