SQLAlchemy вывод из таблицы без Primary key
Есть таблица(table1) по структуре похожа на следующию.
number language desc
3333 RU some desc
3333 UK some desc
3333 EN some desc
4444 EN some desc
4444 UK some desc
5555 RU some desc
Пытаюсь вытянуть данные с помощью SQLAlchemy.
from sqlalchemy import create_engine
import sqlalchemy_teradata
from sqlalchemy.ext.declarative import declarative_base, DeferredReflection
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy import Column, Integer, String, Text, DateTime, Float, Boolean, PickleType
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('teradata://'+uid+':'+password+'@'+host+'/'+db+'?driver='+driver, encoding='utf8', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
db_session.execute('SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;') # To avoid locking tables when doing select on tables
db_session.commit()
Base = declarative_base(cls=DeferredReflection)
Base.query = db_session.query_property()
class TestModel(Base):
"""Data model example."""
__tablename__ = "table1"
__table_args__ = {"schema": "exmple"}
number = Column(Integer, primary_key=True, unique=False ,nullable=False)
language = Column(String(3), nullable=False)
desc = Column(String(3000), nullable=False)
def __repr__(self):
return '<Example model {}>'.format(self.number)
def join_example():
records = db_session.query(TestModel).filter(TestModel.number == 3333).all()
for record in records:
recordObject = {'subsys': round(record.number),
'lang': record.language,
'description': record.desc}
print(recordObject)
join_example()
В результате я получаю только одному сроку, у которой поле number = 3333.
3333 RU some desc
однако их в таблице 3 и мне нужно вывести все 3 записи в json.
Предпологаю, что это из-за строки
number = Column(Integer, primary_key=True, unique=False ,nullable=False)
Как в случае, если нет в таблице primary key указать его корректно. Что бы была выборка из 3х записей а не одной. Или где допущена ошибка, из-за которой только одна запись. UPD так же результирующий набор не в UTF8. хотя указал в create_engine