2013-09-23 17 views
1

嗨我试图检查,如果我已经有一个通过python的mysql表中的条目。我用来检查它们是否已经是条目的密钥称为PID,它使用ascii_bin归类。我的问题是当我尝试类似的东西时...msqldb查询不作为区分大小写

q = """select * from table_name where PID = '%s'"""%("Hello") 
db = MySQLdb.connect("xxxx", "xxxx", "xxxx","temp",cursorclass=MySQLdb.cursors.DictCursor) 
cursor = db.cursor() 
res = cursor.execute(q) 
rowOne = cursor.fetchone() #fetches the row where pid = "hello" 

rowOne最终成为pid = hello的行。但是,当我使用sqlyog并执行查询时,它正确地输出了pid = Hello(正确地用作区分大小写查询)的行。我正在寻找一种方式来获得的MySQLdb的模块为很多我的代码已经正常工作时使用此模块

+1

默认情况下不区分大小写。使用二进制比较,如果你想区分大小写选择:http://stackoverflow.com/questions/3936967/mysql-case-insensitive-select – alecxe

+0

@alecxe在我的问题我已经提到,我的排序规则是ascii_bin和我的选择区分大小写。我有这只在mysql工作,但是当我通过mysqldb尝试它不起作用。这个问题纯粹是python – ZJS

回答

0

通过在MySQL默认的字符串比较操作不区分大小写(或区分重音):http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

你两个简单的选项,虽然,使用COLLATE

例如,如果您比较一列和一个字符串,都有latin1字符集,你可以使用COLLATE操作符,使操作有latin1_general_cs或latin1_bin排序规则:

或设置列区分大小写:

如果你想总是在区分大小写的方式处理列,可使用区分大小写的或二进制校对声明它。请参见第13.1.10节“CREATE TABLE语法”。

+0

,正如我在我的问题中提到的,我正在使用ascii_bin排序规则,这是一种二进制排序规则。这里的问题不是用mysql,而是用pythons模块mysqldb – ZJS

+1

如果你用'collat​​e latin2_bin'在你的搜索词的查询中强制它有效吗?同意这在重读时看起来很奇怪。 – Matthew

+0

不行,不行。这不是一个mysql问题,它是一个mysqldb。我有这个工作完美在mysql – ZJS