我在做Miguel grinberg的瓶教程和第4步數據庫。 http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-databasePython解釋器在Flask教程中沒有正確返回用戶信息
在此步驟中,在播放時間段,當我打開從命令虛擬env和類型Python解釋器將用戶添加:
>> from app import db,models
>> u= models.User(nickname='john', email='[email protected]')
>> db.session.add(u)
>> db.session.commit()
我們獲取用戶信息,我做了以下:
>> users= models.User.query.all()
>> users
和,而不是返回[<User u'john'>]
我越來越:
[<app.models.User object at 0xb74bd1ac>]
這似乎是我返回約翰的記憶位置,而不是實際的名稱。那麼我做錯了什麼?任何建議?
我的models.py代碼:爲db_create.py
from app import db
class User(db.Model):
id = db.Column(db.Integer,primary_key= True)
nickname = db.Column(db.String(64),index= True,unique= True)
email = db.Column(db.String(120),index= True,unique= True)
posts = db.relationship('Post',backref= 'author', lazy='dynamic')
def _repr_(self):
return '<User %r>'% (self.nickname)
class Post(db.Model):
id = db.Column(db.Integer, primary_key= True)
body = db.Column(db.String(140))
timestamp = db.Column(db.DateTime)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
def _repr_(self):
return '<Post %r>' % (self.body)
代碼:
#!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
v = api.db_version(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
migration = SQLALCHEMY_MIGRATE_REPO + ('/versions/%03d_migration.py' % (v+1))
tmp_module = imp.new_module('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))
另外要澄清,我有:用於db_migrate.py
#!flask/bin/python
from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path
db.create_all()
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
else:
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO,
api.version(SQLALCHEMY_MIGRATE_REPO))
代碼在本教程的所有4個部分中遵循所有步驟。在Ubuntu 16.04 vmware版本中使用它。任何幫助將不勝感激。提前致謝!
糟糕!這很愚蠢。感謝@Miguel偉大的教程。學習堆。 –