为了账号安全,请及时绑定邮箱和手机立即绑定

postgres在python中传递参数的问题

postgres在python中传递参数的问题

幕布斯6054654 2022-06-07 19:41:41
我有这个代码,它采用标题、isbn 或一本书的作者,并从数据库中检索所有匹配的数据。问题在于传递参数行,它只检索第一条记录,关于用户输入的数据。我尝试在数据库控制台中使用select 语句并检索正确的语句,我知道传递参数行的 cur.execute 是不正确的。 你能帮我解决这个问题吗?提前谢谢。这是代码class Searchb:    def __init__(self,isbn,author,title):        self.isbn=isbn        self.author=author        self.title=title    def booksearch(self):        query= "select author,title from books where isbn LIKE '%%s%%' OR author LIKE '%%s%%' OR title like '%%s%%' "        cur.execute(query,(self.isbn,self.author,self.title),)        book=cur.fetchmany()
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

问题出在 select 语句中,在将参数传递给数据库的同时,我可以找到使用 Like 的 select 语句的正确语法;postgres

query="select author,title from books where isbn LIKE %s or author like %s or title like %s "
              book_to_search=(self.isbn,self.author,self.title)
              cur.execute(query,book_to_search)
              book=cur.fetchall()


查看完整回答
反对 回复 2022-06-07
?
三国纷争

TA贡献1804条经验 获得超7个赞

您正在使用没有任何参数的 cur.fetchmany() 。从文档

每次调用要获取的行数由参数指定。如果未给出,则游标的数组大小确定要获取的行数。

arraysize 默认为 1,这就是为什么你只得到 1 行。要么指定一些更高的迭代,直到你没有更多的结果,要么只使用cur.fetchall()


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号