Python не сохраняет очищенные данные в базу данных sqlite - PullRequest
0 голосов
/ 12 апреля 2019

Я удалил несколько веб-сайтов и сохранил информацию html в базе данных sqlite.Теперь я хочу извлечь и сохранить адреса электронной почты.Я могу успешно извлечь и распечатать идентификатор и электронную почту.

Все работает без ошибок, и данные выглядят нормально, когда я его печатаю.Но по какой-то причине он не сохраняется в базе данных sqlite.Я не могу понять, почему.Код выполняется без ошибок, но в базе данных нет данных для каких-либо столбцов.Однако таблица электронных писем создана, но в ней нет данных.

Я убедился, что мои SQL-отчеты работают нормально и работают при непосредственном запуске кода.Информация, которую я хочу сохранить, классифицируется как объект str в python.

Вот пример распечатки, когда я запускаю код (ссылка ниже).

enter image description here

PYTHON
import sqlite3
import re

conn = sqlite3.connect('spider.sqlite')
cur = conn.cursor()

cur.execute('CREATE TABLE IF NOT EXISTS Emails \
    (id INTEGER PRIMARY KEY AUTOINCREMENT, url TEXT, email TEXT, test TEXT)')
cur.execute('SELECT id, html, url FROM Pages \
    WHERE html is NOT NULL and email is NULL ORDER BY RANDOM()')
#print('This is x: ', x)#for testing purposes
test = 'test'
print(test)

for row in cur.fetchall():
    id = row[0]
    html = row[1]
    url = row[2]

    email = re.findall(b'[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+', \
        html)
    #print(email)#testing purposes
    print(email)

    for each in email:
        each = str(each)
        print(url)
        print(type(each))
        print(type(url))
        print('for each: ', url, each)

        conn.execute('INSERT OR IGNORE INTO Emails (url, email, test)\
            VALUES ( ?, ? , "test" )', ( url, each,  ) )

    conn.commit

Я хотел бы сохранить URL-адрес и текстовую информацию по электронной почте в базе данных.Это показано в распечатанном примере после «для каждого» * ​​1015 *

1 Ответ

0 голосов
/ 13 апреля 2019

тебе нужен sql?попробуйте simpledb, я также написал свою собственную базу данных, которая поддерживает чтение из нескольких потоков, я думаю, что вы должны отправить save () данные в базу данных sql после ввода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...