Sqlite3/python-从sqlite导出到csv文本文件不超过20

2024-09-26 18:13:57 发布

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

我正在尝试将sqlite表导出为文本文件,在这个站点上我找到了一些很好的帮助。它对较小的输出效果很好,但一旦我达到20k左右,它似乎会限制输出。

第一次尝试是:

马克贝尔独角兽发现于 It is possible export table sqlite3 table to csv or similiar?

我的表有15列,为了便于阅读,我在这里列出了5列

writer = UnicodeWriter(open("Export8.csv", "wb"))

writer.writerow(["RunID","JobNumber","StartTime","EndTime","Period"])

writer.writerows(results)

第二次尝试是:

response = cursor.execute("SELECT RunID, JobNumber, StartTime, EndTime, strftime('%s',substr(endtime,1,19)) - strftime('%s',substr(starttime,1,19)) FROM tblTest WHERE RunID <>0")

strfile = open('_output1.csv','wb')

for row in response:
    print >> strfile,row

第三次尝试是:

strfile = open('_output3.csv','wb')

while True:

    row = cursor.fetchone()

    if row == None:

        break
    print >> strfile,row
    enter code here

第4次尝试/测试:

response = cursor.execute("SELECT RunID, JobNumber, StartTime, EndTime, Period FROM tblTest WHERE RunID <>0")

print response

结果

尝试1: 我得到了183条完整记录的输出和184条记录的第一列

尝试2和3: 我得到了181条完整记录和182条记录中的一些列的输出

尝试4: 我把所有的数据都显示在屏幕上

当我检查sqlite数据库时,我看到205条记录。我知道我一次只能输出100行,但是我想知道为什么我不能输出所有的行


Tags: csvsqliteresponse记录opencursorwriterrow
3条回答

您可以尝试使用pandas加载sql数据,然后将其转储到csv中。不过,您必须安装依赖项(尤其是NumPy)才能使用它。那真的很简单:

import sqlite3
import pandas.io.sql as sql
con = sqlite3.connect('database.db')
table = sql.read_frame('select * from some_table', con)
table.to_csv('output.csv')

我正在使用3.4和sqlite3。我设法不用熊猫来写数据

c = cur.execute("select * from HChange")

with open('c:/tmp/bse/Output.csv','w', newline='') as file:
    for i in c:
        a=c.fetchone()
        csv.writer(file).writerow(a)

您是否尝试将游标本身用作writerows的参数?

cursor.execute("select * from test")

csv_path = "out.csv"
with open(csv_path, "wb") as csv_file:
    csv_writer = csv.writer(csv_file)
    # Write headers.
    csv_writer.writerow([i[0] for i in cursor.description])
    # Write data.
    csv_writer.writerows(cursor)

相关问题 更多 >

    热门问题