sql >> データベース >  >> RDS >> Mysql

SQLAlchemyで、2つの異なる.pyファイル間でForeignKey関係を作成するにはどうすればよいですか?

    重要なのは、テーブルごとに新しいベースを作成するのではなく、両方の外部キーに同じベースを使用することです。

    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:[email protected]/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)
    

    同じBaseがあることを確認してください 関連するすべてのテーブルを作成します。




    1. InnoDBでフルテキストのような検索を実現する方法

    2. Oracleのバージョンを確認する7つの方法

    3. パラメーター番号2はOUTパラメーターではありません

    4. なぜmysqlの代わりにcassandraを使用したnosqlですか?