1

嗨,我正在尝试通过 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 模块正常工作的方法,因为我的很多代码已经在使用这个模块

4

1 回答 1

0

默认情况下,MySQL 中的字符串比较操作不区分大小写(或区分重音):http ://dev.mysql.com/doc/refman/5.0/en/case-sensitive.html

不过,您有两个简单的选择,请使用COLLATE

例如,如果要比较都具有 latin1 字符集的列和字符串,则可以使用 COLLATE 运算符使任一操作数具有 latin1_general_cs 或 latin1_bin 排序规则:

或将列设置为区分大小写:

如果您希望始终以区分大小写的方式处理列,请使用区分大小写或二进制排序规则声明它。请参见第 13.1.10 节,“CREATE TABLE 语法”。

于 2013-09-23T21:23:56.097 回答