2013-09-23 47 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