In user_models.py
, I have this:
class Users(Base):
__tablename__ = \'account_users\'
id = Column(Integer, primary_key = True)
username =
The key is to use the same Base for both foreign keys, instead of creating a new one for each table.
basetest.py
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Column, Integer, String
from sqlalchemy import Table, Text
engine = create_engine('mysql://test:test@localhost/test1',
echo=False)
Base = declarative_base()
user_models.py
from sqlalchemy import Column, Integer, String
from sqlalchemy import Table, Text
#Base = declarative_base()
from basetest import Base
class Users(Base):
__tablename__ = 'account_users'
__table_args__ = {'extend_existing':True}
id = Column(Integer, primary_key = True)
username = Column(String(255), nullable=False)
Base.metadata.create_all(engine)
groups_models.py
from sqlalchemy import create_engine, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship, backref
from sqlalchemy import Column, Integer, String
from sqlalchemy import Table, Text
from basetest import Base
#Base = declarative_base()
from test1 import Users
class Groups(Base):
__tablename__ = 'personas_groups'
__table_args__ = {'extend_existing':True}
id = Column(Integer, primary_key = True )
user_id = Column(Integer, ForeignKey('account_users2.id')) #This creates an error!!!
user = relationship(Users) #this probably won't work. But haven't hit this line yet.
Base.metadata.create_all(engine)
Make sure that you have same Base
to create all related tables.