import sqlite3 populate = """ CREATE VIRTUAL TABLE demo_index USING rtree( id, -- Integer primary key minX, maxX, -- Minimum and maximum X coordinate minY, maxY -- Minimum and maximum Y coordinate ); INSERT INTO demo_index VALUES( 1, -- Primary key -- SQLite.org headquarters -80.7749, -80.7747, -- Longitude range 35.3776, 35.3778 -- Latitude range ); INSERT INTO demo_index VALUES( 2, -- NC 12th Congressional District in 2010 -81.0, -79.6, 35.0, 36.2 ); """ query = "SELECT id FROM demo_index WHERE id MATCH circle(45.3, 22.9, 5.0)" context = ['stuff'] def func(*args, **kwargs): print(f"ARGS: {args}") print(f"KWARGS: {kwargs}") visibility = 1 score = 0.1 return visibility, score, context cx = sqlite3.connect(":memory:") cur = cx.executescript(populate) cx.create_rtree_query_function("circle", func) cx.execute(query)