猿问

postgres在python中传递参数的问题

我有这个代码,它采用标题、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()


幕布斯6054654
浏览 200回答 2
2回答

慕工程0101907

问题出在 select 语句中,在将参数传递给数据库的同时,我可以找到使用 Like 的 select 语句的正确语法;postgresquery="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()

三国纷争

您正在使用没有任何参数的 cur.fetchmany() 。从文档:每次调用要获取的行数由参数指定。如果未给出,则游标的数组大小确定要获取的行数。arraysize 默认为 1,这就是为什么你只得到 1 行。要么指定一些更高的迭代,直到你没有更多的结果,要么只使用cur.fetchall()
随时随地看视频慕课网APP

相关分类

Python
我要回答