gpt4 book ai didi

python - SQLite 数据库上的 Fetchall() 返回 unicode 字符串 [Python 2.7]

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:22 24 4
gpt4 key购买 nike

我在运行 fetchall() 时遇到一些问题。

我有一个如下定义的表:

with bookDB:
bookCur = bookDB.cursor()
bookCur.execute("CREATE TABLE Books(bookID INTEGER PRIMARY KEY, Title TEXT, Author TEXT, Genre TEXT)")
bookCur.close()

现在,如果我想按流派搜索数据库中的书籍,我有以下代码:

with bookDB:
bookCur = bookDB.cursor()
bookCur.execute("SELECT * FROM Books WHERE Genre=?",(query,))
booklist=bookCur.fetchall()
book = ''.join(str(i) for i in booklist)
bookCur.close()
return book;

我想加入书籍列表中的所有项目以创建一个分配给书籍的字符串,但是当我这样做时,所有文本字段都采用 unicode 格式 (u'TEXTHERE') 以及前面和结尾的括号也留下来。我知道我可以多次使用 split 或分隔符,但一定是我做错了什么。我该如何阻止这种情况发生?有什么建议吗?

这是我从 fetchall 返回的内容:

[(133, u'Jurassic Park', u'Crichton', u'Sci-Fi')]

我想要一个这样的字符串

133>>Jurassic Park>>Crichton>>Sci-Fi

通过套接字发回。

提前非常感谢您的帮助。

最佳答案

booklisttuple 的列表s 代表数据库中的查询列。通过这样做book = ''.join(str(i) for i in booklist)您只需连接 tuples 的字符串表示形式在booklist .

尝试这样的事情:

book = '|'.join(['>>'.join(map(str, row)) for row in booklist])

这将返回如下内容:

"133>>Jurassic Park>>Crichton>>Sci-Fi|134>>Star Wars>>Crichton>>Sci-Fi" 

哪里>>是列分隔符和 |是行分隔符。如果您需要分隔符的其他表示形式,只需更改字符串文字即可。

在该代码中,内部 join将连接 tuples (列),外部将连接 rows map(str, row) 是将元组转换为 string 列表的技巧应用对象str元组中每个元素的方法。这是需要的,因为只需执行 join在包含非字符串元素的迭代上返回 TypeError异常。

希望这有帮助!

关于python - SQLite 数据库上的 Fetchall() 返回 unicode 字符串 [Python 2.7],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com