I get the following error when trying to run test.py
:
Traceback (most recent call last):
File "test.py", line 3, in <module>
from goldstrike.mappings.sponsor import Sponsor
File "/home/.../Repos/goldstrike/goldstrike/mappings/sponsor.py", line 4, in <module>
from promotion import Promotion
File "/home/.../Repos/goldstrike/goldstrike/mappings/promotion.py", line 5, in <module>
from sponsor import Sponsor
ImportError: cannot import name Sponsor
The directory structure is as follows:
/test.py
/goldstrike/__init__.py
/goldstrike/mappings/__init__.py
/goldstrike/mappings/sponsor.py
/goldstrike/mappings/promotion.py
test.py
from sqlalchemy.orm import sessionmaker
from db import get_redshift_engine
from goldstrike.mappings.sponsor import Sponsor
eng = get_redshift_engine()
Session = sessionmaker(bind=eng)
session = Session()
p = session.query(Sponsor).get(30).promotions
print p[0].name
sponsor.py
from sqlalchemy import Column, BigInteger, String, DateTime
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from promotion import Promotion
Base = declarative_base()
class Sponsor(Base):
__tablename__ = 'prisponsor'
id = Column(BigInteger, primary_key=True)
name = Column(String(255))
createddate = Column(DateTime)
updateddate = Column(DateTime)
createddateest = Column(DateTime)
promotions = relationship(Promotion, back_populates='sponsor')
promotion.py
from sqlalchemy import Column, BigInteger, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.postgresql import DOUBLE_PRECISION
from sponsor import Sponsor
Base = declarative_base()
class Promotion(Base):
__tablename__ = 'pripromotion'
id = Column(BigInteger, primary_key=True)
sponsorid = Column(BigInteger, ForeignKey('prisponsor.id'))
status = Column(String(50))
createddate = Column(DateTime)
enddate = Column(DateTime)
updateddate = Column(DateTime)
name = Column(String(50))
title = Column(String(50))
totalqty = Column(BigInteger)
perkioskengagement = Column(DOUBLE_PRECISION)
permobileengagement = Column(DOUBLE_PRECISION)
gamekey = Column(String(50))
pripromotiontype_type = Column(String(50))
promotiontag = Column(String(2000))
pripromotioncategory_category = Column(String(255))
whatshot = Column(String(50))
createddateest = Column(DateTime)
startdate = Column(DateTime)
description = Column(String(1000))
salerep = Column(String(50))
sponsor = relationship(Sponsor, back_populates='promotions')