Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trong SQLAlchemy, làm cách nào để tạo mối quan hệ ForeignKey trên 2 tệp .py khác nhau?

Điều quan trọng là sử dụng cùng một Cơ sở cho cả hai khóa ngoại, thay vì tạo một cơ sở mới cho mỗi bảng.

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)

Đảm bảo rằng bạn có cùng một Base để tạo tất cả các bảng có liên quan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cảnh báo:mysql_result () mong đợi tham số 1 là tài nguyên, boolean đã cho

  2. Có trình điều khiển JDBC nào hỗ trợ lệnh sql LOAD DATA INFILE không?

  3. các thủ tục được lưu trữ và vấn đề mysql_insert_id

  4. Trường SQL để trả về có các ký tự không phải số bị loại bỏ trong MySQL

  5. Cách tốt nhất để chọn động tên bảng trong thời gian chạy là gì?