Ok, fixed it - Base must be excluded
class Account(db.Model)
Am Freitag, 26. Oktober 2018 12:18:21 UTC+2 schrieb yuri:
>
> Hi, I've got strange problem - I have funktioning model with several
> relationshps. I wanted to add additional table 'Account' that already
> existed in the database and create one-to-one relationship to User.
> *Indendently* both ot the classes work and can be queried, however if I'm
> trying to establish relationship between them I get following error:
>
> NameError: name 'Account' is not defined
>
> Are there any restrictions dealing with connections
>
> My classes are:
> class User(UserMixin, db.Model):
> id = db.Column(db.Integer, primary_key=True)
> username = db.Column(db.String(64), index=True, unique=True)
> email = db.Column(db.String(120), index=True, unique=True)
> password_hash = db.Column(db.String(128))
> last_message_read_time = db.Column(db.DateTime)
> notifications = db.relationship('Notification', backref='user',
> lazy='dynamic')
> messages_sent = db.relationship('Message',
> foreign_keys='Message.sender_id',
> backref='author', lazy='dynamic')
> account = db.relationship('Account', uselist=False, back_populates=
> "user")
>
>
> class Account(Base, db.Model):
> __tablename__ = 'account'
> __table_args__ = {'schema': 'salesforce'}
>
> external_registration_code__c = db.Column(db.String(12))
> name = db.Column(db.String(255))
> isdeleted = db.Column(db.Boolean)
> systemmodstamp = db.Column(db.DateTime, index=True)
> heroku_login__c = db.Column(db.Boolean)
> createddate = db.Column(db.DateTime)
> type = db.Column(db.String(40))
> website = db.Column(db.String(255))
> firstname = db.Column(db.String(40))
> description = db.Column(db.Text)
> sfid = db.Column(db.String(18), unique=True)
> id = db.Column(db.Integer, primary_key=True, server_default=db.text(
> "nextval('salesforce.account_id_seq'::regclass)"))
> _hc_lastop = db.Column(db.String(32))
> _hc_err = db.Column(db.Text)
> personemail = db.Column(db.String(80))
> recordtypeid = db.Column(db.String(18))
> lastname = db.Column(db.String(80))
> persontitle = db.Column(db.String(80))
> custom_user__c = db.Column(db.Integer, db.ForeignKey('user.id'))
> user = db.relationship('User', back_populates='account')
>
> Traceback (most recent call last):
> File "<console>", line 1, in <module>
> File
> "/Users/ygavrylenko/dev/capp/venv/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py",
>
> line 512, in __get__
> mapper = orm.class_mapper(type)
> File
> "/Users/ygavrylenko/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/base.py",
>
> line 421, in class_mapper
> mapper = _inspect_mapped_class(class_, configure=configure)
> File
> "/Users/usr/heroku/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/base.py",
>
> line 400, in _inspect_mapped_class
> mapper._configure_all()
> File
> "/Users/usr/heroku/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/mapper.py",
>
> line 1276, in _configure_all
> configure_mappers()
> File
> "/Users/usr/heroku/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/mapper.py",
>
> line 3033, in configure_mappers
> mapper._post_configure_properties()
> File
> "/Users/usr/heroku/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/mapper.py",
>
> line 1832, in _post_configure_properties
> prop.init()
> File
> "/Users/usr/heroku/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/interfaces.py",
>
> line 183, in init
> self.do_init()
> File
> "/Users/usr/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/relationships.py",
>
> line 1655, in do_init
> self._process_dependent_arguments()
> File
> "/Users/usr/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/relationships.py",
>
> line 1712, in _process_dependent_arguments
> self.target = self.mapper.mapped_table
> File
> "/Users/usr/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py",
>
> line 767, in __get__
> obj.__dict__[self.__name__] = result = self.fget(obj)
> File
> "/Users/usr/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/orm/relationships.py",
>
> line 1628, in mapper
> argument = self.argument()
> File
> "/Users/usr/dev/capp/venv/lib/python3.7/site-packages/sqlalchemy/ext/declarative/clsregistry.py",
>
> line 293, in __call__
> (self.prop.parent, self.arg, n.args[0], self.cls)
> sqlalchemy.exc.InvalidRequestError: When initializing mapper
> Mapper|User|user, expression 'Account' failed to locate a name ("name
> 'Account' is not defined"). If this is a class name, consider adding this
> relationship() to the <class 'app.models.User'> class after both dependent
> classes have been defined.
>
>
>
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.