Sqllite数据库的Fetchall()返回Unicode字符串 [Python 2.7]

2024-06-16 14:10:36 发布

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

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

我有一个定义如下的表:

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

现在,如果我想按类型在数据库中搜索图书,我有以下代码:

^{pr2}$

我想将图书列表中的所有项目连接起来,生成一个分配给book的字符串,但是当我这样做时,所有的文本字段都是unicode格式(u'TEXTHERE'),前面和结尾的括号也会保留。我知道我可以多次使用分体式或delmitters,但肯定有什么地方我做错了。我怎样才能阻止这种情况的发生?有什么提示吗?在

以下是我从fetchall得到的信息:

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

我想要一根这样的绳子

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

通过插座发回。在

提前非常感谢您的帮助。在


Tags: textparkexecute定义createwithcursorfi
1条回答
网友
1楼 · 发布于 2024-06-16 14:10:36

booklist是表示数据库中查询列的tuple的列表。通过执行book = ''.join(str(i) for i in booklist)操作,您只需将tuples的字符串表示形式连接到booklist中。在

试试这样的方法:

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

这将返回如下内容:

^{pr2}$

其中>>是列分隔符,|是行分隔符。如果需要分隔符的其他表示形式,只需更改字符串文字。在

在该代码中,内部join将连接tuples(列),外部将连接rows^{}是将元组转换为string对象列表的一个技巧,它对元组中的每个元素应用str方法。之所以需要这样做,是因为只要对包含非字符串元素的iterable执行join操作,就会返回一个TypeError异常。在

希望这有帮助!在

相关问题 更多 >