我写的是从谷歌浏览器的历史数据库,并输出到一个CSV文件中提取历史的程序。我试图将信息放在多行中,例如第一行中的URL列表和第二行中的网页标题。然而,当我这样做,我收到以下错误:写入多个列表以CSV排在python
类型错误:解码Unicode的不支持
任何帮助,将不胜感激,下面是我的代码:
import sqlite3
import datetime
import csv
def urls():
conn = sqlite3.connect('C:\Users\username\Desktop\History.sql')
cursor = conn.execute("SELECT url, title, visit_count, last_visit_time from urls")
timestamp = row[3]
value = datetime.datetime(1601, 1, 1) + datetime.timedelta(microseconds=timestamp)
with open("C:\Users\username\Desktop\\historyulrs.csv", "ab") as filecsv:
filecsvwriter = csv.writer(filecsv)
filecsvwriter.writerow(["Url", "Title", "Visit Count", "Last visit Time"])
for row in cursor:
with open("C:\Users\username\Desktop\\historyulrs.csv", "ab") as filecsv:
filecsvwriter = csv.writer(filecsv)
filecsvwriter.writerows([unicode(row[0], row[1]).encode("utf-8")])
conn.close()
urls()
我也找回访问次数和上次访问时间从数据库中添加到CSV中。我还没有实现。
感谢
有几件事情不看就在这里。 'cursor'应该是'conn.cursor()',然后通过游标执行查询并使用'data = cursor.fetchall()'来检索数据。 'timestamp = row [3]'应该抛出一个错误,因为'row'没有被定义?没有理由打开CSV两次,只需写下你的标题,然后进入你的'for'循环。为什么你需要'unicode'呢?我会写一个答案,但我不能确定它会工作,因为我对你的数据库一无所知。 – roganjosh