[DB-SIG] Python vs Delphi; MS SQL Server vs. Anything

David Rushby davidrushby at yahoo.com
Fri Sep 26 13:41:56 EDT 2003

--- Gail Yano <gy at carderockcapital.com> wrote:
> I have been struggling with re-writing some DOS Paradox DB programs
> using Delphi and MS SQL.  My boss wants me to investigate switching
> to Python.  I can't seem to find anything about MS SQL on the Python
> website [understandably].

I think the Python Sybase module also supports MS SQL to some extent (I
have no direct experience with the Sybase module, so I could be wrong):

If not, you could access MS SQL via mxODBC, but it's commercial:

A third alternative would be to use Microsoft's ADO library via COM. 
This would only work if your client program doesn't need to run on
anything but Windows.  To access COM from Python, see:

> I'm open to suggestions as to starting over with Python...

What kind of user interface do the Paradox programs have?  What kind
are  the replacements intended to have?  I suspect you'll find GUI
construction more difficult in Python than in Delphi, because of
Delphi's refined IDE.  For a graphical form builder, you might try Boa
Constructor (but YMMV as to its level of maturity and stability):

Alternatively, PythonCard is touted as an easy GUI toolkit to program

> ... and if so, what database to use.
> PS:  I'm an end-user who happens to program a little.

MS SQL is a nice database engine, but it's restrictively licensed. 
There's a somewhat freely redistributable embedded version called MSDE,
but it has a bunch of limitations as compared to full-blown MS SQL


As an alternative, how about Firebird (an open source descendant of
Borland's Interbase)?

Firebird suits your situation well because:
a) Although it has a broad feature set (far broader than MySQL), it's
easy to use only those features that you need and ignore the rest (it's
similar to Python in this regard).

b) It can operate in embedded or standalone server mode.  "Embedded
mode" means that the Firebird engine runs as a library in the same
process with Python, so you don't have to maintain an external server
process.  This is primarily useful to simplify distribution and
installation, or for deployment on operating systems that support
background services poorly, such as Win9x.  If multiple programs are to
access the same database concurrently, use the server mode instead.

c) It runs well on Windows, unlike PostgreSQL.

d) Refined and free Firebird administration GUIs are available for

e) It has feature-complete and reasonably well documented Python
support via the kinterbasdb module:

f) It's covered by a permissive Mozilla-style license, rather than a
restrictive license like that of MSDE or MySQL.  MySQL is only free
under two circumstances:
  1) You release your MySQL-based application under an open source
  2) You "never distribute (internally or externally) the MySQL
Software in any way".  Unlike the GPL, which applies only to in-process
code and, furthermore, allows intra-company "internal distribution"
without releasing the altered code, the MySQL license applies to any
program in your organization that accesses the MySQL server, whether
in-process or across a network, and requires a license for "internal
  "Internal [intra-company] distribution" of a piece of software could
be interpreted to mean almost anything; it's a wide open ambiguity in
the MySQL license.  You can read my own interpretation of it here:
or a MySQL employee's interpretation here:


Yet another alternative is SQLite (http://sqlite.org/), an admirably
compact database engine with a decent feature set and a good Python
module, but no standalone server mode of operation.


Disclaimer:  I'm biased towards Firebird because I'm deeply involved in
the Python driver, kinterbasdb.  I'm not a zealot, though, and I "eat
my own dogfood", which should make my biased commentary less suspect.

Do you Yahoo!?
The New Yahoo! Shopping - with improved product search

More information about the DB-SIG mailing list