database in python ?

Buck Nuggets bucknuggets at yahoo.com
Tue Apr 12 15:20:25 EDT 2005


> In truth, although postgres has more features, MySQL is probably
> better for someone who is just starting to use databases to develop
> for: the chances are higher that anyone using their code will have
> MySQL than Postgres, and they aren't going to need the features
> that Postgresql has that MySQL doesn't.  IMO, this has changed
> since only a year or two ago, when MySQL didn't support foreign-key
> constraints.

mysql does deserve serious consideration now that it supports
transactions.  However, keep in mind:

1.  mysql doesn't support transactions - one of its io layers (innodb)
does.  If you're hoping to get your application hosted you will find
that most mysql installations don't support innodb.  And due to the
bugs in mysql, when you attempt to create a transaction-safe table in
mysql if innodb isn't available it will just silently create it in
myisam, and your transactions will be silently ignored.

2.  mysql is still missing quite a few database basics - views are the
most amazing omission, but the list also includes triggers and stored
procedures as well.  Although most of these features are included in
the new beta, they aren't yet available in production.

3.  mysql has an enormous number of non-standard features such as
comment formatting, how nulls work, concatenation operator, etc.  This
means that you'll learn non-standard sql, and most likely write
non-portable sql.

4.  additionally, mysql has a peculiar set of bugs - in which the
database will change your data and report no exception.  These bugs
were probably a reflection of mysql's marketing message that the
database should do nothing but persist data, and data quality was the
responsibility of the application.  This self-serving message appears
to have been dropped now that they are catching up with other products,
but there's a legacy of cruft that still remains.  Examples of these
errors include:  silent truncation of strings to fit max varchar
length, allows invalid dates, truncation of numeric data to fit max
numeric values, etc.

5.  cost: mysql isn't expensive, but it isn't free either.  Whether or
not you get to use it for free depends on how you interpret their
licensing info and faq.  MySQL's recommendation if you're confused (and
many are) is to license the product or call one of their reps.

Bottomline - mysql has a lot of marketshare, is improving, and I'm sure
that it'll eventually be a credible product.  But right now it's has a
wide range of inexcusable problems.

More info at http://sql-info.de/mysql/gotchas.html

buck




More information about the Python-list mailing list