user5709080
user5709080

Reputation: 33

Remove double quotes in table name during SQLAlchemy code execution (Teradata)

I'm trying to write a basic ORM SQLAlchemy class to access a Teradata table. However, when SQLAlchemy creates and executes the SQL code, it puts my table name in double quotes, which prevents Teradata from recognizing the table as a valid table name (it's expecting the table name without quotes). Is there anyway to remove the quotes that SQLalchemy is executing with?

For example:

class d_game_info(Base):
    __tablename__ = 'dbo.d_game_info'
    game_id = Column(Integer, primary_key = True)
    game_name = Column()

Session = sessionmaker(bind=td_engine)
session = Session()

for instance in session.query(d_game_info).order_by(d_game_info.game_id):
    print(instance.game_name)

Results in the error:

"Object 'dbo.d_game_info' does not exist."

because the code SQLAlchemy tries to execute is

... FROM "dbo.d_game_info" ...

instead of

... FROM dbo.d_game_info ...

So... is there a way to force it to execute code without the double quotes?

Thanks!

Upvotes: 3

Views: 3718

Answers (2)

AYUSH
AYUSH

Reputation: 11

You can use the quote parameter

class d_game_info(Base):
    __tablename__ = 'dbo.d_game_info'
    __table_args__ = {'quote': False}
    game_id = Column(Integer, primary_key = True)
    game_name = Column()

The quote parameter can also be used with Column() in case it is putting column name in quotes.

game_name = Column('GAME_NAME', String(50), quote=False)

Upvotes: 1

univerio
univerio

Reputation: 20548

dbo is not part of the table's name; it's the schema name of the table. The way to specify the schema in SQLAlchemy is like this:

class d_game_info(Base):
    __table_args__ = {'schema' : 'dbo'}

Upvotes: 4

Related Questions