Calling it a compiler is (to me) really stretching things, I can't see any code to emit any other form of the code, it's all aimed at evaluating (executing) it.
Edit: oops, I didn't read the code closely enough, it does emit code but only internally, that code is what gets executed. Thanks for the corrections!
Python, JavaScript, and other languages which are traditionally considered interpreted but may do (JIT) compilation in their implementation are used as if they were interpreters: to the user, there's no separate compilation step. You run python somefile.py or node somefile.js (or refresh a browser holding a page), and editing the source code causes the next invocation to take those changes immediately. Contrast this with C/C++ and Java where there is definitely an explicit compilation step in nearly all implementations.
The program in this article thus is an implementation of a compiler, but has the interface of an interpreter.
Your SQL database also has a compiler. SQL is compiled to an execution plan. Compile doesn't only mean "create a machine code executable file".
None of these assertions is correct.
> (Referring specifically to the part which compiles Python to bytecode)
So referring specifically to something different than what I explicitly specified, it's called something else.
By that reasoning, a cow is a muscle and you are an acid.
> Your SQL database also has a compiler.
"Has a" and "is a" are rather different relationships.
> Compile doesn't only mean "create a machine code executable file".
You're the only person who made that assertion.
You should fix the Wikipedia article:
https://en.wikipedia.org/wiki/CPython
"CPython can be defined as both an interpreter and a compiler as it compiles Python code into bytecode before interpreting it."
Compiler for the Tiny-C Language (2001)
In fact, that is exactly how the source code describes itself in the comments.