TIM*_*MEX 13 mysql database orm sqlalchemy
在user_models.py,我有这个:
class Users(Base):
__tablename__ = 'account_users'
id = Column(Integer, primary_key = True)
username = Column(String(255), nullable=False)
Base.metadata.create_all(engine)
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我创建了一个用户表.
在我的另一个文件中groups_models.py,我有这个:
class Groups(Base):
__tablename__ = 'personas_groups'
id = Column(Integer, primary_key = True)
user_id = Column(Integer, ForeignKey('account_users.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)
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,我想从群组 - >用户中建立多对一的关系.
但是当我跑groups_models.py...我得到这个错误:
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 'personas_groups.user_id' could not find table 'account_users' with which to generate a foreign key to target column 'id'
Run Code Online (Sandbox Code Playgroud)
如果我将两个表放在一个文件中,我确信它可以工作......但是因为我将它分成2个文件(我绝对必须这样做)...我不知道如何使ForeignKey关系工作了吗?
Nil*_*esh 20
试试这个
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()
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
确保您具有相同的功能Base来创建所有相关表.