sql >> Databáze >  >> RDS >> Mysql

Jak v SQLAlchemy vytvořím vztah ForeignKey mezi 2 různými soubory .py?

Klíčem je použití stejné báze pro oba cizí klíče namísto vytváření nového pro každou tabulku.

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)

Ujistěte se, že máte stejný Base vytvořit všechny související tabulky.




  1. Vzdálená připojení Mysql Ubuntu – adresa vazby se nezdařila

  2. Jak identifikovat duplikaci primárního klíče z kódu chyby SQL Server 2008?

  3. Spojení dvou pracovních SQL dotazů dostane špatné výsledky - Kde dělám chybu

  4. Monitoring &Ops Management MySQL 8.0 s ClusterControl