Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-sqlalchemy.exc.ArgumentError:无法为映射表组装任何主键列_Python_Flask Sqlalchemy_Alembic - Fatal编程技术网

Python-sqlalchemy.exc.ArgumentError:无法为映射表组装任何主键列

Python-sqlalchemy.exc.ArgumentError:无法为映射表组装任何主键列,python,flask-sqlalchemy,alembic,Python,Flask Sqlalchemy,Alembic,我正在使用Flask+Alembic+Sqlalchemy。我想创建两个表并使用它。首先,我运行alembic脚本: """add table insurace_bands and insurace_discounts Revision ID: 39ba7ec3428 Revises: 18468fbedbac Create Date: 2015-05-12 09:10:05.175513 """ # revision identifiers, used by Alembic. revis

我正在使用Flask+Alembic+Sqlalchemy。我想创建两个表并使用它。首先,我运行alembic脚本:

"""add table insurace_bands and insurace_discounts

Revision ID: 39ba7ec3428
Revises: 18468fbedbac
Create Date: 2015-05-12 09:10:05.175513

"""

# revision identifiers, used by Alembic.
revision = '39ba7ec3428'
down_revision = '18468fbedbac'

from alembic import op
import sqlalchemy as sa

def upgrade():

        op.create_table('insurance_bands',

                sa.Column('id', sa.Integer(), nullable=False),

                sa.Column('name', sa.String(length=1024), nullable=False),

                sa.Column('product_price', sa.Numeric(precision=6, scale=2)),

                sa.Column('monthly_price', sa.Numeric(precision=6, scale=2)),

                sa.Column('active', sa.Boolean(), nullable=False, server_default='1'),

                sa.PrimaryKeyConstraint('id')
                )

    op.create_table('insurance_discounts',

                sa.Column('id', sa.Integer(), nullable=False),

                sa.Column('name', sa.String(length=1024), nullable=False),

                sa.Column('min_products', sa.Integer()),

                sa.Column('max_products', sa.Integer()),

                sa.Column('discount', sa.Numeric(precision=6, scale=2)),

                sa.Column('active', sa.Boolean(), nullable=False, server_default='1'),

                sa.PrimaryKeyConstraint('id')
                )

def downgrade():

    op.drop_table(
    'insurance_bands'
    )


    op.drop_table(
    'insurance_discounts'
    )
此脚本运行正常。然后,我创建了如下两个模型:

# -*- coding: utf-8 -*-
"""
    admin.insurance_brands.models
    ~~~~~~~~~~~~~~~~~~~~~

    insurance brand models
"""

from ..core import db
from ..helpers import JsonSerializer


class InsuranceBandJsonSerializer(JsonSerializer):
    __json_public__ = ['id', 'name', 'product_price', 'monthly_price', 'active']


class InsuranceBand(InsuranceBandJsonSerializer, db.Model):

    __tablename__ = 'insurance_bands'

    id = db.Column(db.Integer(), primary_key=True),
    name = db.Column(db.Unicode(1024)),
    product_price = db.Column(db.Numeric(precision=6, scale=2)),
    monthly_price = db.Column(db.Numeric(precision=6, scale=2)),
    active = db.Column(db.Boolean, default=True)


class InsuranceDiscountJsonSerializer(JsonSerializer):
    __json_public__ = ['id', 'name', 'min_products', 'max_products', 'active']


class InsuranceDiscount(InsuranceDiscountJsonSerializer, db.Model):

    __tablename__ = 'insurance_discounts'

    id = db.Column(db.Integer(), primary_key=True),
    name = db.Column(db.Unicode(1024)),
    min_products = db.Column(db.Integer()),
    max_products = db.Column(db.Integer()),
    active = db.Column(db.Boolean, default=True)
但当我运行server:python wsgi.py时,它抛出错误:

sqlalchemy.exc.ArgumentError:映射器映射器|保险带|保险带无法为映射表“保险带”组合任何主键列

这个模型似乎没有主键,但我定义了它


有人能帮我吗。提前感谢。

在您的课程中,您必须删除
之后的


你能试着去掉字段声明末尾的逗号并试试吗?@JRajan,啊,你说得对,我的错。非常感谢:D。
class InsuranceBand(InsuranceBandJsonSerializer, db.Model):

    __tablename__ = 'insurance_bands'

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.Unicode(1024))
    product_price = db.Column(db.Numeric(precision=6, scale=2))
    monthly_price = db.Column(db.Numeric(precision=6, scale=2))
    active = db.Column(db.Boolean, default=True)