Skip to main content
 首页 » 编程设计

python之sqlite3 : create function regexp with python

2025年05月04日26JustinYoung

python 3.6。我正在尝试为 sqlite3 创建一个 REGEXP 函数。我有错误:OperationalError: wrong number of arguments to function REGEXP()

这是我的代码:

import sqlite3 
import re 
 
def fonctionRegex(mot): 
    patternRecherche = re.compile(r"\b"+mot.lower()+"\\b") 
    return patternRecherche.search(item) is not None 
 
dbName = 'bdd.db' 
connexion = sqlite3.connect(dbName) 
leCursor = connexion.cursor() 
connexion.create_function("REGEXP", 1, fonctionRegex) 
 
mot = 'trump' 
data = leCursor.execute('SELECT * FROM tweet WHERE texte REGEXP ?',mot).fetchall() 

谢谢

请您参考如下方法:

你做错了什么。这是更正确的例子

import sqlite3 
import re 
 
 
def functionRegex(value, pattern): 
    c_pattern = re.compile(r"\b" + pattern.lower() + r"\b") 
    return c_pattern.search(value) is not None 
 
 
connection = sqlite3.connect(':memory:') 
cur = connection.cursor() 
cur.execute('CREATE TABLE tweet(msg TEXT)') 
cur.execute('INSERT INTO tweet VALUES("This is a test message")') 
cur.execute('INSERT INTO tweet VALUES("Another message")') 
 
connection.create_function("REGEXP", 2, functionRegex) 
 
print(cur.execute('SELECT * FROM tweet WHERE REGEXP(msg, ?)', ('test',)).fetchall()) 
print(cur.execute('SELECT * FROM tweet WHERE REGEXP(msg, ?)', ('message',)).fetchall()) 
print(cur.execute('SELECT * FROM tweet WHERE ? REGEXP msg', ('message',)).fetchall()) 

将打印

[('This is a test message',)] 
[('This is a test message',), ('Another message',)] 
[('This is a test message',), ('Another message',)]