将SQLite数据库查询写入单独的文件
下面的代码将SQL查询的所有结果放入预定义的HTML和文本文档中。我想根据messages.conversation\u id列将它们写入单独的文件中,该列来自它所使用的数据库。我可以使用哪个函数来执行此操作?我在我所做的研究中找不到任何东西 先谢谢你将SQLite数据库查询写入单独的文件,sqlite,python-3.x,pandas,Sqlite,Python 3.x,Pandas,下面的代码将SQL查询的所有结果放入预定义的HTML和文本文档中。我想根据messages.conversation\u id列将它们写入单独的文件中,该列来自它所使用的数据库。我可以使用哪个函数来执行此操作?我在我所做的研究中找不到任何东西 先谢谢你 cur = cur.execute("""SELECT DISTINCT messages.conversation_id FROM messages INNER JOIN part
cur = cur.execute("""SELECT DISTINCT messages.conversation_id
FROM messages
INNER JOIN participants_info ON messages.participant_id = participants_info._id
WHERE messages.conversation_id IS NOT NULL;""")
query = ("""SELECT strftime('%Y-%m-%d %H:%M:%S',messages.date/1000,'unixepoch'), participants_info.number, participants_info.contact_name, messages.body, messages.conversation_id, messages.participant_id
FROM messages
INNER JOIN
participants ON messages.participant_id = participants._id
INNER JOIN
participants_info ON participants.participant_info_id = participants_info._id
WHERE messages.conversation_id = ?
ORDER BY messages.date;""")
with open('messages.html', 'w') as h, open('test.txt', 'w') as t:
for convo in cur.fetchall():
df = pd.read_sql_query(query, conn, params=convo)
# HTML WRITE
h.write(df.to_html())
h.write('<br/>')
# TXT WRITE
t.write(df.to_string())
t.write('\n\n')
交换with和for语句的顺序,并调整with open以具有动态文件名而不是静态名称如何将SQL查询指定为动态变量?很抱歉第一次使用SQLite和Python!当然,不用担心,这里的评论也是为了获得答案的灵感,而且确实有人这么做了。看看内森的答案。
cur = cur.execute("""SELECT DISTINCT messages.conversation_id
FROM messages
INNER JOIN participants_info ON messages.participant_id = participants_info._id
WHERE messages.conversation_id IS NOT NULL;""")
query = ("""SELECT strftime('%Y-%m-%d %H:%M:%S',messages.date/1000,'unixepoch'), participants_info.number, participants_info.contact_name, messages.body, messages.conversation_id, messages.participant_id
FROM messages
INNER JOIN
participants ON messages.participant_id = participants._id
INNER JOIN
participants_info ON participants.participant_info_id = participants_info._id
WHERE messages.conversation_id = ?
ORDER BY messages.date;""")
for convo in cur.fetchall():
with open('{}.html'.format(convo), 'w') as h, open('{}.txt'.format(convo), 'w') as t:
df = pd.read_sql_query(query, conn, params=convo)
# HTML WRITE
h.write(df.to_html())
h.write('<br/>')
# TXT WRITE
t.write(df.to_string())
t.write('\n\n')