首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对在Python中从对象获取值感到困惑

对在Python中从对象获取值感到困惑
EN

Stack Overflow用户
提问于 2017-02-16 08:31:39
回答 1查看 63关注 0票数 0

因此,我目前正在研究Amazon API。

代码语言:javascript
复制
amazon = AmazonAPI('mykey', 'mykey', 'bmykey')

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

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

返回的类型

代码语言:javascript
复制
<class 'amazon.api.AmazonSearch'>

当我运行以下代码时

代码语言:javascript
复制
for p in products:
     print(p.asin) 

结果如下所示

代码语言:javascript
复制
B004B8AZH0
B00XTAFYKY
B0014P8L9W
B00QZ67ODE
B00ARF42H0
B011YRJ31O  

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

表字段-

(INT(11)) id

(VARCHAR(255)) ASIN

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

代码语言:javascript
复制
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()  

但回报是

代码语言:javascript
复制
query = query % args
TypeError: not all arguments converted during string formatting  

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

我试过了

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

但我得到了

代码语言:javascript
复制
_mysql_exceptions.OperationalError: (1054, "Unknown column 'B004B8AZH0' in 'field list'")

还有没有其他的建议可以试试?我似乎想不通了。

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 10:04:40

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

  1. 带有占位符(%s)的查询字符串。不要在要使用的值的placeholder.
  2. An 可迭代两边使用引号,而不要使用占位符。

您传递的是一个字符串,这意味着execute尝试使用字符串的每个字符作为值。因此,简单地将你的论点放在一个列表中:

代码语言:javascript
复制
cur.execute(your_query, [p.asin])

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42262691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档