Устранение ошибки
За последним полем в определении вашей таблицы стоит запятая, вероятно, это вызывает ошибку.
start_date integer,
следует обновить на start_date integer
.
Устранение будущих ошибок
Я также рекомендовал бы вам добавить условие IF NOT EXISTS
в свой оператор, если вы собираетесь запускать файл, содержащий этот скрипт, несколько раз. Если вам удастся создать таблицу, а затем попытаться запустить оператор, который создаст таблицу с тем же именем, вы, скорее всего, получите следующую ошибку: sqlite3.OperationalError: table jobdata already exists
.
Предлагаемое решение # 1
# Your existing code as is before CREATE TABLE statement
c.execute("""CREATE TABLE IF NOT EXISTS jobdata (
company text,
role text,
industry text,
location text,
wage integer,
start_date integer
);""")
# Your existing code as is after CREATE TABLE statement
Менеджеры контекста
Возможно, стоит подумать об использовании диспетчера контекста при выполнении транзакций БД с использованием соединения sqlite3
( см. Документы ).
Я считаю они полезны с точки зрения удобочитаемости и безопасности, они автоматически фиксируют / откатывают транзакции - это означает, что забыть запустить conn.commit()
не стоит беспокоиться.
Очевидно, есть случаи, когда вы можете не захотеть использовать диспетчер контекста , однако это похоже на solid кандидата на его использование, просто подумал, что этим стоит поделиться с вами, если вы не знаете об этой функции.
Пример кода из вашего исходного вопроса с использованием диспетчера контекста для обработки транзакция базы данных ниже (включая изменения, внесенные в прямой ответ на вопрос выше):
Предлагаемое решение №2 * 1 032 * import tkinter as tk
from tkinter import ttk
from tkinter import *
import sqlite3
LARGEFONT =("Verdana", 35)
conn = sqlite3.connect('jobtracker.db')
with conn:
conn.execute("""CREATE TABLE IF NOT EXISTS jobdata (
company text,
role text,
industry text,
location text,
wage integer,
start_date integer
);""")
conn.close()