Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQLite数据库查询写入单独的文件_Sqlite_Python 3.x_Pandas - Fatal编程技术网

将SQLite数据库查询写入单独的文件

将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

下面的代码将SQL查询的所有结果放入预定义的HTML和文本文档中。我想根据messages.conversation\u id列将它们写入单独的文件中,该列来自它所使用的数据库。我可以使用哪个函数来执行此操作?我在我所做的研究中找不到任何东西

先谢谢你

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')