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-sensitivity.html

ただし、次の 2 つの簡単なオプションがありますCOLLATE

たとえば、どちらも latin1 文字セットを持つ列と文字列を比較する場合、COLLATE 演算子を使用して、いずれかのオペランドに latin1_general_cs または latin1_bin 照合順序を持たせることができます。

または、大文字と小文字を区別するように列を設定します。

列を常に大文字と小文字を区別して処理する場合は、大文字と小文字を区別する照合順序またはバイナリ照合順序で列を宣言します。セクション13.1.10「CREATE TABLE 構文」を参照してください。

于 2013-09-23T21:23:56.097 に答える