ID列

时间:2018-10-09 13:45:17

标签: python-3.x flask-sqlalchemy snowflake

我正在尝试使用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:'插入用户(ID,用户名,电子邮件,密码)VALUES(%(id)s,%(username)s,%(email)s,%(password_hash)s))' ] [参数:[{'电子邮件':'jtest@test.net','用户名':'乔丹','密码':无}]](此错误的背景位于:http://sqlalche.me/e/f405

这是我收到的错误,从我在网上阅读的内容来看,这应该可以工作,但它会反馈“无效标识符”错误。

1 个答案:

答案 0 :(得分:0)

找到了解决方案,因为我使用的是烧瓶迁移软件包,所以进入了版本文件夹,并在用户表的迁移脚本中观察到我的“序列”功能未包括在内。这导致我的ID出现无效标识符错误。

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')
)