gpt4 book ai didi

python - SQLalchemy: alembic bulk_insert() 失败

转载 作者:行者123 更新时间:2023-11-28 20:22:32 26 4
gpt4 key购买 nike

在将其标记为重复之前:

我确实看过这个question/answer ,我确实按照它的建议做了,但是当我添加这段代码时:

permslookup = sa.Table('permslookup',
sa.Column('perms_lookup_id', primary_key=True),
sa.Column('name', sa.Unicode(40), index=True),
sa.Column('description', sa.Text),
sa.Column('value', sa.Numeric(10, 2)),
sa.Column('ttype', sa.PickleType(), index=True),
sa.Column('permission', sa.Unicode(40), index=True),
sa.Column('options', sa.PickleType())
)

然后运行alembic upgrade head,我得到以下错误:

AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema'

当我检查完整的堆栈跟踪时,我注意到这是导致错误的原因:

sa.Column('options', sa.PickleType())

这是上面代码的最后一行......我该如何解决这个问题?我不知道如何解决它......任何形式的帮助将不胜感激。

这里是我要插入的数据:

op.bulk_insert('permslookup',
[
{
'id': 1,
'name': 'accounts',
'description': """ Have permission to do all transactions """,
'value': 1,
'ttype': ['cash', 'loan', 'mgmt', 'deposit', 'adjustments'],
'permission': 'accounts',
'options': None
},
{
'id': 2,
'name': 'agent_manage',
'description': """ Have permission to do cash, cash, loan and Management Discretion transactions """,
'value': 2,
'ttype': ['cash', 'loan', 'mgmt'],
'permission': 'agent_manage',
'options': None
},
{
'id': 3,
'name': 'corrections',
'description': """ Have permission to do cash, loan and adjustments transactions """,
'value': 3,
'ttype': ['cash', 'loan', 'adjustments'],
'permission': 'corrections',
'options': None
},
{
'id': 4,
'name': 'cashup',
'description': """ Have permission to do cash and loan transactions """,
'value': 4,
'ttype': ['cash', 'loan'],
'permission': 'cashup',
'options': None
},

]
)

我在尝试运行 bulk_insert 时得到的原始错误是:

AttributeError: 'str' object has no attribute '_autoincrement_column'

最佳答案

对于错误 #1,信息不足。需要堆栈跟踪。

对于 #2,bulk_insert() 接收 Table 对象,而不是字符串名称作为参数。

参见 http://alembic.readthedocs.org/en/latest/ops.html#alembic.operations.Operations.bulk_insert :

from alembic import op
from datetime import date
from sqlalchemy.sql import table, column
from sqlalchemy import String, Integer, Date

# Create an ad-hoc table to use for the insert statement.
accounts_table = table('account',
column('id', Integer),
column('name', String),
column('create_date', Date)
)

op.bulk_insert(accounts_table,
[
{'id':1, 'name':'John Smith',
'create_date':date(2010, 10, 5)},
{'id':2, 'name':'Ed Williams',
'create_date':date(2007, 5, 27)},
{'id':3, 'name':'Wendy Jones',
'create_date':date(2008, 8, 15)},
]
)

关于python - SQLalchemy: alembic bulk_insert() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23063248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com