Python `编程错误,表不存在';t exist`usingalembic bulk\u insert

Python `编程错误,表不存在';t exist`usingalembic bulk\u insert,python,alembic,Python,Alembic,我正在尝试使用alembic创建一个新表,并使用bulk\u insert添加新条目。我正在执行bulk\u insert以下是我正在运行的代码: from alembic import op import sqlalchemy as sa from sqlalchemy.sql import table, column def upgrade(): status_reviews = table( 'status', column('status_ord

我正在尝试使用alembic创建一个新表,并使用
bulk\u insert
添加新条目。我正在执行
bulk\u insert
以下是我正在运行的代码:

from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table, column

def upgrade():
    status_reviews = table(
        'status',
        column('status_order', sa.Integer),
        column('status_name', sa.String(64))
        )

    op.bulk_insert(status_reviews,
        [
            {'status_order': 1, 'status_name': 'New'},
            {'status_order': 2, 'status_name': 'Reviewed'},
            {'status_order': 3, 'status_name': 'Design'},
        ]
    )
尝试运行时出现以下错误:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1146, u"Table 'partsdb.review_status_definitions' doesn't exist") 'INSERT INTO review_status_definitions (status_order, status_name) VALUES (%s, %s)' ((1, 'New'), (2, 'Reviewed'), (3, 'Design')

我知道基本的alembic功能正在发挥作用,因为我能够添加其他表(不提供条目)。当我在MySQL Workbench中检查数据库时,
状态
表根本没有显示出来,这让我认为它实际上在create table命令上失败了。

我认为您使用alembic创建表时使用了错误的语法。您在那里定义了表模式,这是在Python代码中设置它的方式(并通过db.create_all()创建),但是您在alembic中使用不同的语法创建表:

def upgrade():
    op.create_table('categories',
      sa.Column('id', sa.Integer(), primary_key=True),
      sa.Column('name', sa.String(length=100), nullable=False),
      sa.Column('modified', sa.DateTime(), nullable=True),
      sa.Column('created', sa.DateTime(), nullable=True),
    )
    for category in ["example", "another example"]:
      op.execute("INSERT INTO categories (name, modified, created) VALUES ('%s', '%s', '%s')" % (category, datetime.utcnow(), datetime.utcnow()))

Alembic确实有一个自动生成功能,它将读取Python中定义的表模式,将其与数据库进行区分,并为您生成一个升级文件。现在对您来说,这听起来似乎有些过分,但很高兴知道。

根据alembic和stackexchange上的其他示例,我需要使用sqlalchemy创建表,然后使用alembic填充它。当我尝试使用使用alembic创建的表进行
bulk\u insert
时,我会得到
AttributeError:“NoneType”对象没有属性“\u autoincrement\u column”
错误