Я пишу программу, которая извлекает историю из базы данных истории Google Chrome и выводит ее в файл CSV. Я пытаюсь помещать информацию в несколько строк, например список URL-адресов в первой строке и заголовок веб-страницы во второй строке. Однако, когда я делаю это, я получаю следующее сообщение об ошибке:Запись нескольких списков в строки CSV в python
TypeError: декодирование 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'. Зачем вам «юникод»? Я бы написал ответ, но я не мог быть уверен, что это сработает, потому что я ничего не знаю о вашей БД. – roganjosh