Is it just me, or is Sqlite3 goofy?

mensanator at mensanator at
Tue Sep 12 08:29:28 CEST 2006

Gabriel Genellina wrote:
> At Tuesday 5/9/2006 16:23, mensanator at wrote:
> >I would be surprised if they had never used ANY database. A little
> >thing like dynamic field typing will simply make it impossible to
> >migrate your Sqlite data to a *real* database.
> Why not? Because it breaks the relational model rules?

That's part of it.

> That model
> certainly was great 30 years ago, but now things are different.

Different only in "lite" databases.

> (In
> fact, you didn't menction the word "relational", but I presume you
> were thinking of that).
> Even what you call *real* databases have a lot of incompatibilities
> among them (e.g. ORACLE does not provide an "autoincrement" type, but
> has sequences, and so on...).

But it was stated in the sqlite docs that ALL SQL databases
use static types implying that sqlite will be incompatible
with any "heavy" database should the need arise to migrate
upwards. The issue is not that there will be compatibilty
problems with any data migration but that the truth is exactly
opposite of what's claimed in Section 13.13.

I'm not saying sqlite can't be used, what I'm asking for
is that the documentation lay the facts out and I'll decide
whether I can make this work in my application. Lying about
it makes you sound like Microsoft.

> Of course you could restrict yourself
> to, by example, SQL92 entry level and be a lot more compatible.
> But if I'm using a nice OO language like Python which lets me bind
> *any* object to *any* name, why should be wrong to bind *any* object
> to *any* database column?

But SQL isn't OO, it's relational. That means JOINing tables
together on a common field. In theory, due to the comparison
hierarchy, it is impossible to do JOINs with dynamic typing
since different types can never be equal. In practice, the type
affinity kluge trys to work around this but can't do anything
if the string doesn't look like an integer when a text field
attempts to JOIN to an interger field.

> Looks a lot more "pythonic" for me.

If all you have is a hammer, everything looks like a nail.

> Of
> course, a true object database (like ZODB) is better.
> Gabriel Genellina
> Softlab SRL
> __________________________________________________
> Preguntá. Respondé. Descubrí.
> Todo lo que querías saber, y lo que ni imaginabas,
> está en Yahoo! Respuestas (Beta).
> ¡Probalo ya! 

More information about the Python-list mailing list