0
我正在使用sqlalchemy 0.7和MySQL服務器版本5.1.63。sqlalchemy不區分大小寫的查詢sql鍊金術
我下表對我的數據庫:
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是一個包含一些域名的Python列表,如
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) –