첫번째로 모두를 반환하지 :SQLAlchemy의 쿼리가 여기 내 환경에 대한 조금의 큰 텍스트 필드
- 내 데이터베이스 관리 도구로 MSSMS 사용.
SQLAlchemy의을 사용하여 장고 1.3
SQLAlchemy
을 사용하여이 필드를 검색하면 64512 자로 잘립니다. 나는 여러 다른 큰 행에도 시도해 봤는데 항상 64512로 잘렸다.
SELECT @@TEXTSIZE
은 160 만 개라는 다소 불합리한 값을 반환하므로 문제가되지 않는다. 내가 SELECT DATALENGTH(field)
을하면 올바른 890591을 반환합니다. 따라서 데이터베이스가 아닌 것 같습니다. SQLAlchemy
인 것 같습니다. 아니면 파이썬의 한계 일 수도 있습니다.
아이디어가 있으십니까? 내 재치가있는 것 같아.
편집 : 여기에 요청 된 좀 더 많은 정보가있다 :
OS : 데비안 5.0.9
SQLAlchemy의 : 0.7.3
SQL : MS SQL 서버 2008
DB 연결 : mssql + pymssql : // 이름 : password @ server/dbname
pymssql 버전 : 1.0.2
문제모델 :
class RACReport(Base):
__tablename__ = 'RACReport'
id = Column(properUUID(), primary_key=True, nullable=False, default=genuuid4, server_default=text('NEWID()'))
client_id = Column(properUUID(), ForeignKey(Client.id), nullable=False)
rawdata = Column(Text(), nullable=True)
rawtime = Column(DateTime(), nullable=True, default=datetime.datetime.now())
processeddata = Column(Text(), nullable=True)
processedtime = Column(DateTime(), nullable=True)
reportstartdate = Column(DateTime(), nullable=False)
reportenddata = Column(DateTime(), nullable=False)
numberofdocs = Column(Integer(), nullable=True)
RACReport.__table__.schema='rac'
class properUUID(st.TypeDecorator):
impl = mssql.MSUniqueIdentifier
def process_result_value(self, value, dialect):
if value:
return str(uuid.UUID(bytes_le=value))
def genuuid4():
return str(uuid.uuid4())
RAWDATA 및 processdata 그가 가진 문제가있는 두 개의 필드가 있습니다. 여기
은 테스트 쿼리 및 에코 :rac.session.query(rac.RACReport).filter(rac.RACReport.id=='8fb76cb7-d752-45af-a20a-3b85d5e7b8a6').all()
이
2011-11-17 09:39:46,890 INFO sqlalchemy.engine.base.Engine SELECT [RACReport_1].id AS [rac_RACReport_id], [RACReport_1].client_id AS [rac_RACReport_client_id], [RACReport_1].rawdata AS [rac_RACReport_rawdata], [RACReport_1].rawtime AS [rac_RACReport_rawtime], [RACReport_1].processeddata AS [rac_RACReport_processeddata], [RACReport_1].processedtime AS [rac_RACReport_processedtime], [RACReport_1].reportstartdate AS [rac_RACReport_reportstartdate], [RACReport_1].reportenddate AS [rac_RACReport_reportenddate] FROM rac.[RACReport] AS [RACReport_1] WHERE [RACReport_1].id = %(id_1)s 2011-11-17 09:39:46,890 INFO sqlalchemy.engine.base.Engine {'id_1': '8fb76cb7-d752-45af-a20a-3b85d5e7b8a6'}
재미있는 값은 2^16 - 2^10과 같습니다. –
@BrianCain 나는 그것도 생각했다 ... – MatthewKremer
'pdb' 또는'pudb'로 관련'SQLAlchemy' 코드를 한 단계 씩 실행할 수 있습니까? –