0
sqlalchemy 0.7 및 MySQL 서버 버전 5.1.63을 사용하고 있습니다.Sqlalchemy 대소 문자를 구분하지 않는 쿼리 sql alchemy
내 데이터베이스에 다음과 같은 테이블이 :
CREATE TABLE `g_domains` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `name` (`name`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
대응하는 모델은 없다 :
class GDomain(Base):
__tablename__ = 'g_domains'
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8',
'mysql_collate': 'utf8_general_ci'
}
id = Column(mysql.BIGINT(unsigned=True), primary_key=True)
name = Column(mysql.VARCHAR(255, collation='utf8_general_ci'),
nullable=False, unique=True)
SQL 연금술 반환의 다음 쿼리에 행 :
session.query(GDomain).filter(GDomain.name.in_(domain_set)).
limit(len(domain_set)).all()
domain_set은
과 같은 일부 도메인 이름을 포함하는 파이썬 목록입니다.domain_set = ['www.google.com', 'www.yahoo.com', 'www.AMAZON.com']
테이블에 행 (1, www.amazon.com)이 있지만 위 쿼리는 (www.google.com, www.yahoo.com) 만 반환합니다.
나는 SQL 쿼리 실행
SELECT * FROM g_domains
WHERE name IN ('www.google.com', 'www.yahoo.com', 'www.AMAZON.com')
당신이 이런 일이 왜 생각을 가지고 있습니까를?
미리 감사드립니다.
감사 쿼리가 올바른 응답을 위해. 문제는 sqlalchemy가 데이터베이스 정렬을 존중하지 않는 것 같습니다 (utf8_general_ci) –