Создать таблицу с автоинкрементом - PullRequest
0 голосов
/ 11 ноября 2019

Мне нужно создать таблицу с автоинкрементным столбцом. Я создаю веб-приложение с sqlite в качестве фона, а sql alchemy является слоем orm. Python и Flask в качестве внешнего интерфейса. Я создаю некоторый список отделов, и идентификатор отдела должен быть автоматически увеличен. Когда я пытаюсь добавить отдел через интерфейс, я не предоставляю идентификатор отдела. Потому что идентификатор отдела является первичным ключом и должен быть автоматически увеличен. Я добавил название отдела и задания отделачерез интерфейс без каких-либо ошибок. Но когда я пытаюсь перечислить список отделов, я получаю ошибку. AttributeError: у объекта 'NoneType' нет атрибута 'отдела_идентификатора'

. Я пытался создать файл sqlite

create table Departments(department_id primarykey integer autoincrement,department_name char,department_jobs char);

. При попытке создать эту схему я получаю сообщение об ошибке "Синтаксическая ошибка рядом с"autoincrement '

Я пытался использовать заглавную букву, auto_increment, автоинкремент.

Ничего не работает

Моя sql алхимия выглядит так

class Departments(db.Model):
    "Adding the department" 
    department_id = db.Column(db.Integer,primary_key=True)   
    department_name = db.Column(db.String(50),nullable=False)   
    department_jobs = db.Column(db.String(40),nullable=False)

Здесь я ожидаю, как сделать автоматическое увеличение в sqllite и sqlalchemy, чтобы использовать его как во внешнем, так и во внутреннем интерфейсе.

1 Ответ

1 голос
/ 11 ноября 2019

Вы кодировали PRIMARYKEY вместо PRIMARY KEY , и вам также следует кодировать INTEGER PRIMARY KEY , так как тип столбца должен отображаться первым.

Нет необходимости, по вашему объяснению, кодировать AUTOINCREMENT.

Отключение AUTOINCREMENT будет более эффективным и, насколько вам известно, сделает то же самое. то есть, если значение для Department_id не указано, то SQLite автоматически сгенерирует значение, которое будет равно 1 для первой вставленной строки, а затем, как правило, на 1 больше для следующей строки и т. д. (SQLite не гарантирует монотонно увеличивающиеся числа).

Автоинкремент SQLite , включающий

Ключевое слово AUTOINCREMENT накладывает дополнительные затраты ресурсов процессора, памяти, дискового пространства и дискового ввода-вывода, и его следует избегать, если нетстрого необходимо. Обычно это не нужно.

Я бы предложил, просто используя: -

create table Departments(department_id INTEGER PRIMARY KEY,department_name char,department_jobs char);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...