2011-07-14 70 views
2

兩個類似的疑問:sqlite3,Python中的「=」和「匹配」之間的區別?

firstQuery = "select * from table_name where column_name = match_value" 
secondQuery = "select * from table_name where column_name match match_value" 

執行使用dbCursor.execute()工作正常第一位的,但在執行第二個拋出:

sqlite3.OperationalError: unable to use function MATCH in the requested context 

這是爲什麼可能有人請解釋一下嗎?謝謝。

回答

4

從源碼expression syntax文檔:

匹配操作符是用於匹配()應用定義的函數的特殊語法。 默認的match()函數實現引發了一個異常,對任何事情都沒有什麼用處。但擴展可以用更有用的邏輯覆蓋match()函數。

2

在Python 2.7

import sqlite3 

conn = sqlite3.connect(":memory:") 

cur = conn.cursor() 

cur.execute("create table test(v1 text, v2 int)") 

for index in range(5): 
    cur.execute("insert into test values(\"python ###{index}\", {index})".format(index=index)) 

import re 
def matchPattern(pattern, value): 
    return bool(re.match(pattern, value)) # return true or false 

# creating the 'match' function. 
conn.create_function("matchPattern", 2, matchPattern) 

運行...

i = cur.execute("select v1, v2 from test where matchPattern('python', v1)") 
print i.fetchall() 

#打印 - > [ 「蟒### 1」,1)「,蟒### 2 「,2),...,....]

相關問題