Неверный идентификатор Flask-SQLAlchemy для столбца идентификатора - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь использовать терминал Python для добавления пользователя с помощью следующих команд:

from app import db
from app.models import User, Post
u = User(username='Jordan',email='jtest@test.net')
db.session.add(u)
db.session.commit()

Ниже представлена ​​моя модель:

class User(db.Model):
    id = db.Column(db.Integer, db.Sequence('id_seq'), primary_key=True)
    username = db.Column(db.String(64), unique=True)
    email = db.Column(db.String(120), unique=True)
    password = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author',lazy='dynamic')

    def __repr__(self):
        return 'User {}'.format(self.username)

Сценарий инициализации:

from flask import Flask
from config import Config, SnowflakeImpl
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

# Creates an instance of the flask application
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)

from app import routes, models

sqlalchemy.exc.StatementError: (sqlalchemy.exc.ProgrammingError) (snowflake.connector.errors.ProgrammingError) 000904 (42000): ошибка компиляции SQL: строка ошибки 1 в позиции 7, недопустимый идентификатор 'ID_SEQ.NEXTVAL' [SQL: 'INSERT INTO user (идентификатор, имя пользователя, электронная почта, пароль) ЗНАЧЕНИЯ (% (id) s,% (имя пользователя) s,% (электронная почта) s,% (password_hash) s)'] [параметры: [{'email':' jtest@test.net ',' username ':' Jordan ',' password ': None}]] (Справочная информация об этой ошибке: http://sqlalche.me/e/f405)

Это ошибка, которую я получаю,из того, что я прочитал в Интернете, это должно сработать, но оно возвращает ошибку «неверный идентификатор».

1 Ответ

0 голосов
/ 09 октября 2018

Нашел решение, так как я использую пакет переноса колб, я зашел в папку с версиями и заметил, что в скрипте переноса для моей таблицы пользователей моя функция «Последовательность» не была включена.Это приводило к тому, что у моего идентификатора была ошибка неверного идентификатора.

def upgrade():
    op.create_table('user',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('username', sa.String(length=64), nullable=True),
    sa.Column('email', sa.String(length=120), nullable=True),
    sa.Column('password_hash', sa.String(length=128), nullable=True),
    sa.PrimaryKeyConstraint('id'),
    sa.UniqueConstraint('email'),
    sa.UniqueConstraint('username')
)
...