Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Di SQLAlchemy, bagaimana cara membuat hubungan ForeignKey di 2 file .py yang berbeda?

Kuncinya adalah menggunakan Basis yang sama untuk kedua kunci asing, alih-alih membuat yang baru untuk setiap 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)

Pastikan Anda memiliki Base yang sama untuk membuat semua tabel terkait.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan Model Data Entitas ADO.NET di VS 2017 dan tidak ada yang terjadi

  2. Tidak dapat mengimpor mysql-python di crontab Mac OS

  3. Kesalahan penguraian:kesalahan sintaks, tak terduga (T_VARIABLE)

  4. Mendapatkan data dari beberapa tabel menjadi satu baris sambil menggabungkan beberapa nilai

  5. php+mysql:masukkan array php ke mysql