Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python msqldb查询不区分大小写_Python_Mysql_Case Sensitive - Fatal编程技术网

Python msqldb查询不区分大小写

Python msqldb查询不区分大小写,python,mysql,case-sensitive,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

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

默认情况下,MySQL中的字符串比较操作不区分大小写或重音:

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

例如,如果要比较同时具有拉丁1字符集的列和字符串,可以使用COLLATE运算符使任一操作数具有拉丁1_general_cs或拉丁1_bin排序规则:

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

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


默认情况下,它不区分大小写。如果需要区分大小写的select,请使用二进制比较:@alecxe在我的问题中,我已经提到我的排序规则是ascii_-bin,我的select是区分大小写的。我只在mysql中使用它,但当我通过mysqldb尝试它时,它不起作用。问题纯粹是python,如果您使用collate-latin2\u-bin在搜索词的查询中强制使用python,它是否有效?同意这一点在重读时似乎有点奇怪。您是否尝试过记录mysqldb实际发送给MySQL的内容?对不起,我不知道这还会是什么。我也不知道mysqldb模块怎么可能会导致这个问题。只是想澄清一下,您已将代码更改为:q=select*from table_name,其中PID COLLATE latin1_bin='%s'%Hello,但仍然存在此错误?我唯一能想到尝试的另一件事是此q=select*与table_name(其中PID='%s'COLLATE latin1_bin%Hello)的不同排列,其中PID='%s'COLLATE latin1_bin'%Hello或表两侧的其他区分大小写的字符集变量:对照utf8\u bin或utf8\u general\u cs。MySQL是否接收到您期望的每个查询?是否可以将整个表设置为区分大小写的字符集进行搜索将表更改为:DEFAULT CHARSET=utf8 COLLATE utf8\u general\u cs?如果这些都不起作用,我会给你一笔赏金——我现在很好奇。