尝试从sqlite3获取值并将其转换为字符串并将其存储在变量中
import sqlite3
conn = sqlite3.connect('mydb.db')
database = conn.cursor()
u = 'ZERO'
all_data = str(database.execute("SELECT * FROM logs where loguser =? ", (u,)).fetchone())
结果:
(5,' ZERO',你好!')
我试过了:
x = ''.join(all_data)
print(x)
我希望:
5 ZERO你好!
答案 0 :(得分:1)
运行fetchone()
时,会得到一个元组,它表示数据库表中的行,因此列的值是元组中的元素:
(5, 'ZERO', 'hello there !')
然后您使用str()
转换为字符串:
>>> all_data = str((5, 'ZERO', 'hello there !'))
>>> all_data
"(5, 'ZERO', 'hello there !')"
在将值存储到all_data
之前,您已将其转换为字符串,这就是您''.join()
无效的原因:
>>> ''.join('abcdefg')
'abcdefg'
您显然不想要逗号和括号,因此我们不应该首先将fetchone()
的结果转换为字符串。让我们先得到元组:
>>> data = database.execute(...).fetchone()
>>> data
(5, 'ZERO', 'hello there !')
现在将元组的元素连接在一起,用空格分隔(正如您所问):
' '.join(data)
如果元组中有非字符串元素(在您的情况下为5
),则无效。因此您需要在加入之前将所有内容转换为字符串。我推荐使用理解:
' '.join(str(column) for column in data)
这将为您提供所需的最终字符串:
>>> data_str = ' '.join(str(x) for x in data)
>>> data_str
'5 ZERO hello there !'