Here's where Django defines REGEXP: 
https://github.com/django/django/blob/2f10216f84b55920de25422842a66260219e393f/django/db/backends/sqlite3/base.py#L173

>From http://stackoverflow.com/a/8244670:

SQLite does not contain regular expression functionality by default.

It defines a REGEXP operator, but this will fail with an error message 
unless you or your framework define a user function 
<http://www.sqlite.org/c3ref/create_function.html> called regexp().

You can execute raw SQL on a Django connection using the technique 
documented at 
https://docs.djangoproject.com/en/stable/topics/db/sql/#connections-and-cursors.
On Monday, February 13, 2017 at 5:06:47 PM UTC-5, Thomas Nyberg wrote:
>
> Hello, 
>
> I have a question about regexes and sqlite3. I am executing a certain 
> line of code: 
>
>      >>> regex = 'NET | INCOME' 
>      >>> Table.objects.filter(name__iregex=regex). 
>
> When I have it print out the SQL sent, I get the following (this is a 
> simplified, but equivalent version): 
>
>      SELECT * 
>      FROM "table" 
>      WHERE "table"."name" 
>      REGEXP '(?i)' || 'NET | INCOME' 
>      LIMIT 21 
>
> However if I execute that directly against the sqlite database i get the 
> following error: 
>
>      sqlite3.OperationalError: no such function: REGEXP 
>
> I thought that maybe this magic was handled in python's sqlite3 module, 
> but if i do it there i get the same error. So basically my question is, 
> can anyone tell me where this is transformed into regular sql? it 
> obviously happens somehwere (I get no error when running in django after 
> all), but I can't for the life of me figure out where. 
>
> Thanks a lot! 
>
> Thomas 
>
> PS: I have tried using the shell_plus --print-sql extension, but that 
> shows me the same thing. 
>
> PPS: Obviously not django-related, but if anyone knows how to get a 
> sqlite database to log all queries issued against it, that would also 
> obviously solve this issue. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f793a2cd-5f71-402c-ad6b-c6bd12bbf0c9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to