jueves, 11 de julio de 2024

Python (VII): sqlite con regexp. Definición de funciones en SQLITE

1. Regexp con SQLITE 

Según aGueGu en stackoverflow podemos hacer búsquedas en sqlite y Python así


import sqlite3
import re

# Definimos una función con 2 parámetros 
def match(expr, item):
    return re.match(expr, item) is not None

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

#Le pasamos esta función y le indicamos que tiene 2 parámetros
conn.create_function("MATCHES", 2, match)
cursor = conn.cursor()
cursor.execute("SELECT MATCHES('^b', 'busy');")
print (cursor.fetchone()[0])

cursor.close()
conn.close()


2. Definición de funciones en SQLITE

En el apartado anterior hemos definido la función MATCHES, que usa regexp, ahora vamos a definir la función split de python donde le indicamos el delimitador. Pero a pesar que en geeksforgeeks.org dice que funciona, a mi no me funciona pues no deja que un campo sea tipo list, tupla o array!!!!!


import sqlite3

# Definimos una función con 2 parámetros 
def split_str(delimitedText, delimiter=','):
    return delimitedText.split(delimiter)


#Nos conectamos a sqlite, en este caso en memoria (sin fichero)
conn = sqlite3.connect(':memory:') #Le pasamos esta función y le indicamos que tiene 2 parámetros conn.create_function("SPLIT", 2, split_str)
cursor = conn.cursor() cursor.execute("SELECT SPLIT('Pepe;Juan;Ignacio', ';');")
print (cursor.fetchone()[0]) #FALLA!!!! cursor.close() conn.close()




No hay comentarios :

Publicar un comentario