1

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')
jstudios
  • 856
  • 1
  • 9
  • 26

2 Answers2

0

okay, please ignore my above answer. looks like there is a circular reference with sponsor and promotion. check this post out.

Community
  • 1
  • 1
newGuy
  • 354
  • 1
  • 2
  • 11
-1

It looks like your trying to import the sponsor class from the sponsor class. SHouldn't it be

from goldstrike.mappings import Sonsor

Not

from goldstrike.mappings.sponsor import Sponsor
newGuy
  • 354
  • 1
  • 2
  • 11