cursor.execute () не загружает строки в базу данных sqlite - PullRequest
0 голосов
/ 25 июня 2019

Я создал скребок, который сохраняет в файл .csv, и сейчас пытаюсь сохранить строки из этого файла .csv в базу данных sqlite3 с помощью оператора IF, но он не работает. Я попытался отформатировать значения в дюжине разных способов и не получаю.

«Соответствие» печатается каждый раз, когда оператор IF равен True, но строка не добавляется в базу данных sqlite. Вызов cur.fetchall () / one () / etc приводит к возвращению None.

db = sqlite3.connect(':memory:')
cur = db.cursor()
cur.execute("DROP TABLE IF EXISTS jobs_table")
cur.execute('''CREATE TABLE IF NOT EXISTS
                                   jobs_table(id TEXT,
                                              date TEXT,
                                              company TEXT, 
                                              position TEXT,
                                              tags TEXT,
                                              description TEXT,
                                              url TEXT)''')

skills = ('python')
for row in csv_data:
    if skills in row.get('description').lower():
        print('')
        print('Match!')
        cur.execute("INSERT INTO jobs_table(id,  
                                            date,  
                                            company,  
                                            position,  
                                            tags,  
                                            description,  
                                            url) VALUES(:id,   
                                                        :epoch,   
                                                        :date,   
                                                        :company,   
                                                        :position,   
                                                        :tags,   
                                                        :description,   
                                                        :url)", row)

Я предполагаю, что проблема в моей функции cur.execute (), но я не могу понять, как еще она должна выполняться. Любой берущий?

1 Ответ

2 голосов
/ 25 июня 2019

Если вы звоните cur.fetchone() сразу после cur.execute(), чтобы получить None (или [] для cur.fetchall()). Сначала нужно выполнить запрос, чтобы получить результаты, например cur.execute("SELECT * FROM jobs_table").

...