में परिवर्तन माइग्रेट करते समय अनपैक करने के लिए बहुत अधिक मूल्य" मेरे पास स्क्लेक्लेमी में कई मॉडल हैं और मैंने माइग्रेट स्क्रिप्ट चलाने के दौरान अपवाद प्राप्त करना शुरू किया: ValueError: अनपैक करने के लिए बहुत सारे मानपायथन/एसक्यूएल कीमिया माइग्रेट - "वैल्यूएरर: डीबी
from app import db
ROLE_USER = 0
ROLE_ADMIN = 1
class UserModel(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(25), index=True)
password = db.Column(db.String(50))
email = db.Column(db.String(50), index=True, unique=True)
role = db.Column(db.SmallInteger, default=ROLE_USER)
def __repr__(self):
return '<User %r>' % (self.username)
class ConferenceModel(db.Model):
__tablename__ = 'conference'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(40), index=True, unique=True)
teams = db.relationship('TeamModel', backref='conference', lazy='dynamic')
def __repr__(self):
return '<Conference %r>' % (self.name)
class TeamModel(db.Model):
__tablename__ = 'team'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), index=True, unique=True)
conference_id = db.Column(db.Integer, db.ForeignKey('conference.id'))
players = db.relationship('PlayerModel', backref='team', lazy='dynamic')
def __repr__(self):
return '<Team %r>' % (self.name)
class PlayerModel(db.Model):
__tablename__ = 'player'
id = db.Column(db.Integer, primary_key=True)
season = db.Column(db.String(4), index=True)
name = db.Column(db.String(75), index=True)
number = db.Column(db.String(3))
position = db.Column(db.String(4))
height = db.Column(db.Integer)
weight = db.Column(db.Integer)
academic_class = db.Column(db.String(2))
hometown = db.Column(db.String(40))
status = db.Column(db.SmallInteger)
team_id = db.Column(db.Integer, db.ForeignKey('team.id'))
def __repr__(self):
return '<player %r>' % (self.name)
class GameModel(db.Model):
__tablename__ = 'game'
id = db.Column(db.Integer, primary_key=True)
espn_id = db.Column(db.Integer, index=True)
date_time = db.Column(db.DateTime)
location = db.Column(db.String(100))
home_final = db.Column(db.Integer)
away_final = db.Column(db.Integer)
game_type = db.Column(db.Integer)
season = db.Column(db.Integer)
home_team_id = db.Column(db.Integer, db.ForeignKey('team.id'))
away_team_id = db.Column(db.Integer, db.ForeignKey('team.id'))
home_team = db.relationship("TeamModel", backref="homegames", foreign_keys=[home_team_id])
away_team = db.relationship("TeamModel", backref="awaygames", foreign_keys=[away_team_id])
class ScoreDataModel(db.Model):
__tablename__ = 'scoredata'
id = db.Column(db.Integer, primary_key=True)
starter = db.Column(db.Boolean)
minutes_played = db.Column(db.Integer)
field_goals_made = db.Column(db.Integer)
field_goals_attempted = db.Column(db.Integer)
three_pointers_made = db.Column(db.Integer)
three_pointers_attempted = db.Column(db.Integer)
free_throws_made = db.Column(db.Integer)
free_throws_attempted = db.Column(db.Integer)
offensive_rebounds = db.Column(db.Integer)
rebounds = db.Column(db.Integer)
assists = db.Column(db.Integer)
steals = db.Column(db.Integer)
blocks = db.Column(db.Integer)
turnovers = db.Column(db.Integer)
personal_fouls = db.Column(db.Integer)
points = db.Column(db.Integer)
# Added the columns below and the migrate script blew up...
# I've taken them out and added other columns, but the error still presents
player_id = db.Column(db.Integer, db.ForeignKey('player.id'))
game_id = db.Column(db.Integer, db.ForeignKey('game.id'))
player = db.relationship("PlayerModel", backref="boxscores")
game = db.relationship("GameModel", backref="boxscore")
यहाँ मेरी विस्थापित लिपि (इस frmo मिगुएल Grinberg के मेगा बोतल ट्यूटोरियल लिया गया था) है::
#!flask/bin/python
import imp
from migrate.versioning import api
from app import db
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
migration = SQLALCHEMY_MIGRATE_REPO + '/versions/%03d_migration.py' % (api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) + 1)
tmp_module = imp.new_module('old_model')
old_model = api.create_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
exec old_model in 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)
print 'New migration saved as ' + migration
print 'Current database version: ' + str(api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO))
और ज
यहाँ मेरी मॉडल हैं
/Users/johncaine/anaconda/bin/python /Volumes/Spano/Dropbox/Dropbox/eclipse-workspace/CAUDLE/src/caudle/caudle/db_migrate.py
Traceback (most recent call last):
File "/Volumes/Spano/Dropbox/Dropbox/eclipse-workspace/CAUDLE/src/caudle/caudle/db_migrate.py", line 11, in <module>
script = api.make_update_script_for_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, tmp_module.meta, db.metadata)
File "<string>", line 2, in make_update_script_for_model
File "/Users/johncaine/anaconda/lib/python2.7/site-packages/migrate/versioning/util/__init__.py", line 89, in catch_known_errors
return f(*a, **kw)
File "<string>", line 2, in make_update_script_for_model
File "/Users/johncaine/anaconda/lib/python2.7/site-packages/migrate/versioning/util/__init__.py", line 159, in with_engine
return f(*a, **kw)
File "/Users/johncaine/anaconda/lib/python2.7/site-packages/migrate/versioning/api.py", line 321, in make_update_script_for_model
engine, oldmodel, model, repository, **opts)
File "/Users/johncaine/anaconda/lib/python2.7/site-packages/migrate/versioning/script/py.py", line 69, in make_update_script_for_model
genmodel.ModelGenerator(diff,engine).genB2AMigration()
File "/Users/johncaine/anaconda/lib/python2.7/site-packages/migrate/versioning/genmodel.py", line 197, in genB2AMigration
for modelCol, databaseCol, modelDecl, databaseDecl in td.columns_different:
ValueError: too many values to unpack
मेरा मानना है कि केवल परिवर्तन मैंने बनाया ScoreDataModel जोड़ने था जब इस उड़ा शुरू कर दिया: पहले ट्रैस बैक है। मैं उस पर वापस जाने के लिए प्रतीत नहीं कर सकता जहां मैं इसे ठीक कर सकता हूं।
क्या आपने td.columns_different' के माध्यम से 'td.columns_different 'में कुछ के लिए पुनरावृत्ति की कोशिश की है? मेरा मानना है कि 'कुछ' में 4 मान कम हो सकते हैं। – twil
एसक्यूएलकेमी और स्क्लाक्लेमी-माइग्रेट का कौन सा संस्करण आप उपयोग कर रहे हैं? – Miguel
SQLAlchemy v0.8.3 और SQLAlchemy-migrate v0.8.2 – jcaine04