mysqldb查询不是区分大小写的

时间:2013-09-23 21:15:52

标签: python mysql case-sensitive

您好我正在尝试检查我是否已经通过python在mysql表中有一个条目。我用来检查它们是否已经是一个条目的密钥称为PID,它使用ascii_bin整理。我的问题是当我尝试类似的事情......

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 个答案:

答案 0 :(得分: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语法”。