Guest User

Untitled

a guest
Jan 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. import os
  2.  
  3. from flask import Flask
  4. from flask_sqlalchemy import SQLAlchemy
  5. from flask_migrate import Migrate
  6.  
  7.  
  8. basedir = os.path.abspath(os.path.dirname(__file__))
  9.  
  10.  
  11. class Config:
  12. SECRET_KEY = os.environ.get('SECRET_KEY') or 'a-key'
  13. SQLALCHEMY_DATABASE_URI = (
  14. os.environ.get('DATABASE_URI')
  15. or 'sqlite:///' + os.path.join(basedir, 'app.db'))
  16. SQLALCHEMY_TRACK_MODIFICATIONS = False
  17.  
  18.  
  19. app = Flask(__name__)
  20. app.config.from_object(Config)
  21.  
  22. db = SQLAlchemy(app)
  23. migrate = Migrate(app, db)
  24.  
  25.  
  26. class User(db.Model):
  27.  
  28. id = db.Column(db.Integer, primary_key=True)
  29.  
  30. name = db.Column(db.String(64), index=True, unique=True)
  31.  
  32. # Games created by the user:
  33. created_games = db.relationship(
  34. 'Game', backref='author', lazy='dynamic',
  35. foreign_keys='game.user_id')
  36.  
  37. # Games as opponent:
  38. invitations = db.relationship(
  39. 'Game', backref='guest', lazy='dynamic',
  40. foreign_keys='game.opponent_id')
  41.  
  42.  
  43. class Game(db.Model):
  44.  
  45. id = db.Column(db.Integer, primary_key=True)
  46.  
  47. # "Creator" user:
  48. user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  49.  
  50. # "Opponent" user:
  51. opponent_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  52.  
  53. (venv) $ export FLASK_APP=app.py
  54. (venv) $ flask db init
  55. ...
  56. (venv) $ flask db migrate
  57. ...
  58. (venv) $ flask db upgrade
  59. ...
  60.  
  61. (venv) $ python
  62. Python 3.6.0
  63. ...
  64. >>> from app import User
  65. >>> u = User(name="Alice")
  66. Traceback (most recent call last):
  67. File "<stdin>", line 1, in <module>
  68. File "<string>", line 2, in __init__
  69. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/instrumentation.py", line 347, in _new_state_if_none
  70. state = self._state_constructor(instance, self)
  71. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 767, in __get__
  72. obj.__dict__[self.__name__] = result = self.fget(obj)
  73. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/instrumentation.py", line 177, in _state_constructor
  74. self.dispatch.first_init(self, self.class_)
  75. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/event/attr.py", line 256, in __call__
  76. fn(*args, **kw)
  77. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/mapper.py", line 3123, in _event_on_first_init
  78. configure_mappers()
  79. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/mapper.py", line 3013, in configure_mappers
  80. mapper._post_configure_properties()
  81. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/mapper.py", line 1811, in _post_configure_properties
  82. prop.init()
  83. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/interfaces.py", line 184, in init
  84. self.do_init()
  85. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/relationships.py", line 1655, in do_init
  86. self._process_dependent_arguments()
  87. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/orm/relationships.py", line 1680, in _process_dependent_arguments
  88. setattr(self, attr, attr_value())
  89. File "/home/ubuntu/workspace/Exp/venv/lib/python3.6/site-packages/sqlalchemy/ext/declarative/clsregistry.py", line 281, in __call__
  90. x = eval(self.arg, globals(), self._dict)
  91. File "<string>", line 1, in <module>
  92. AttributeError: 'Table' object has no attribute 'user_id'
Add Comment
Please, Sign In to add comment