Python Flask, SQLAlchemy relationship
Question: I've been trying to fix this problems for a few hours already, I cannot manage
to get SQLAlchemy working (it was working untill I put the two new functions,
User and Registration)

    
    
    from flask.ext.sqlalchemy import SQLAlchemy
    from . import app
    from datetime import datetime
    
    db = SQLAlchemy(app)
    
    class PasteCode(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        codetitle = db.Column(db.String(60), unique = True)
        codebody = db.Column(db.Text)
        pub_date = db.Column(db.DateTime)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
        parent_id = db.Column(db.Integer, db.ForeignKey('paste_code.id'))
        parent = db.relationship('PasteCode', lazy = True, backref = 'children', uselist = False, remote_side = [id])
    
        def __init__(self, codetitle, codebody, parent = None):
            self.codetitle = codetitle
            self.codebody = codebody
            self.pub_date = datetime.utcnow()
            self.parent = parent
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        display_name = db.Column(db.String(30))
        #pastes = db.Column(db.Integer, db.ForeignKey('paste_code.id'))
        pastes = db.relationship(PasteCode, lazy = "dynamic", backref = "user")
    
    class Registration(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        username = db.Column(db.String(30), unique = True)
        password = db.Column(db.String(100), unique = False)
    

This is the traceback it gives me when running:

    
    
    OperationalError: (OperationalError) no such table: paste_code u'SELECT paste_code.id AS paste_code_id, paste_code.codetitle AS paste_code_codetitle, paste_code.codebody AS paste_code_codebody, paste_code.pub_date AS paste_code_pub_date, paste_code.user_id AS paste_code_user_id, paste_code.parent_id AS paste_code_parent_id \nFROM paste_code' ()
    

I also tried this:

    
    
    from flask.ext.sqlalchemy import SQLAlchemy
    from . import app
    from datetime import datetime
    
    db = SQLAlchemy(app)
    
    class PasteCode(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        codetitle = db.Column(db.String(60), unique = True)
        codebody = db.Column(db.Text)
        pub_date = db.Column(db.DateTime)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
        parent_id = db.Column(db.Integer, db.ForeignKey('pastecode.id'))
        parent = db.relationship('PasteCode', lazy = True, backref = 'children', uselist = False, remote_side = [id])
    
        def __init__(self, codetitle, codebody, parent = None):
            self.codetitle = codetitle
            self.codebody = codebody
            self.pub_date = datetime.utcnow()
            self.parent = parent
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        display_name = db.Column(db.String(30))
        pastes =  db.relationship(PasteCode, lazy = 'dynamic', backref = 'user')
        #pastes = db.relationship(PasteCode, lazy = "dynamic", backref = "user")
    
    class Registration(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        username = db.Column(db.String(30), unique = True)
        password = db.Column(db.String(100), unique = False)
    

And I got this error:

    
    
    ArgumentError: Could not determine join condition between parent/child tables on relationship PasteCode.parent. Specify a 'primaryjoin' expression. If 'secondary' is present, 'secondaryjoin' is needed as well.
    

Any idea? Thank you!


Answer: The way I fixed it was simple, I added

    
    
    __tablename__ = "paste_code"
    

and everything worked as it should, I think SQLAlchemy wasn't checking the
table name properly.

