我在mysql命令中得到以下错误typeerror: object() takes no parameters
,这对我来说没有意义。该错误是由于下降从我的models.py username列,我不再需要sqlalchemy错误:object()在从db中删除列后没有参数错误model.py
下面是我的models.py文件中的用户模型定义,我要删除的用户名列,得到当我从模型
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(32), index=True, unique=True)
firstname = db.Column(db.String(128))
lastname = db.Column(db.String(128))
email = db.Column(db.String(120), index=True, unique=True)
删除它上面的错误下面是我用它来更新数据库我db_migrate.py文件。我得到这个从Miguel's database tutorial
#!flask/bin/python
import types
from migrate.versioning import api
from app import db
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
migration = SQLALCHEMY_MIGRATE_REPO + ('/versions/%03d_migration.py' % (v+1))
tmp_module = types.ModuleType('old_model')
old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
exec(old_model, tmp_module.__dict__)
script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, tmp_module.meta, db.metadata)
open(migration, "wt").write(script)
api.upgrade(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
print('New migration saved as ' + migration)
print('Current database version: ' + str(v))
这是005_migration.py文件
from sqlalchemy import *
from migrate import *
from migrate.changeset import schema
pre_meta = MetaData()
post_meta = MetaData()
user = Table('user', pre_meta,
Column('id', INTEGER(display_width=11), primary_key=True, nullable=False),
Column('username', VARCHAR(length=32)),
Column('email', VARCHAR(length=120)),
Column('password_hash', VARCHAR(length=128)),
Column('firstname', VARCHAR(length=128)),
Column('lastname', VARCHAR(length=128)),
)
def upgrade(migrate_engine):
# Upgrade operations go here. Don't create your own engine; bind
# migrate_engine to your metadata
pre_meta.bind = migrate_engine
post_meta.bind = migrate_engine
pre_meta.tables['user'].columns['username'].drop()
def downgrade(migrate_engine):
# Operations to reverse the above upgrade go here.
pre_meta.bind = migrate_engine
post_meta.bind = migrate_engine
pre_meta.tables['user'].columns['username'].create()
我认为这是最好让'alembic'模块为你处理数据库迁移。你尝试过吗? –
另外,我认为列的数据类型的形式是('Integer','String' ...)... –
未来,请不要将回溯作为图像嵌入。 –