Ich bekomme den folgenden Fehler typeerror: object() takes no parameters
auf einem MySQL-Befehl, der für mich keinen Sinn macht. Der Fehler wird durch den Benutzernamen Spalte von meinem models.py fallen, die ich nicht mehrsqlalchemy error: object() nimmt keine Parameter Fehler nach dem Löschen der Spalte aus db model.py
Unten ist die Benutzermodell Definition in meiner models.py Datei benötigen, möchte ich den Benutzernamen Spalte fallen zu lassen und erhalten die oben genannten Fehler, wenn ich es aus dem Modell entfernen
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)
Unten ist meine db_migrate.py-Datei, die ich die db aktualisieren verwendet. Ich habe diese von 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))
Dies ist die Datei 005_migration.py ist
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()
Ich denke, es ist besser zu lassen 'Alembic' Modul für Sie die db Migrationen behandeln. Hast du das versucht? –
Plus, ich denke Datentypen für Spalten hat die Form ('Integer',' String' ...) ... –
In Zukunft, bitte nicht Tracebacks als Bilder einbetten. –