sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter jeg en ForeignKey-relation i SQLAlchemy på tværs af 2 forskellige .py-filer?

Nøglen er at bruge den samme base for begge fremmednøgler i stedet for at oprette en ny for hver tabel.

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)

Sørg for, at du har samme Base for at oprette alle relaterede tabeller.




  1. Overvågning af brugte forbindelser på mysql for at fejlsøge 'for mange forbindelser'

  2. MySQL CEILING() Funktion – Rund op til det nærmeste heltal

  3. Valgfri parametre i Mysql-lagrede procedurer

  4. Hvordan trækker man alt produkt-id, sku'er, produktnavne, beskrivelse i magento kun ved hjælp af mysql?