Database recommendations for Windows app

Discussion in 'Python' started by Will McGugan, Jun 22, 2005.

  1. Will McGugan

    Will McGugan Guest

    Hi,

    I'd like to write a windows app that accesses a locally stored database.
    There are a number of tables, the largest of which has 455,905 records.

    Can anyone recommend a database that runs on Windows, is fast /
    efficient and can be shipped without restrictions or extra downloads?

    I have googled and found plenty of information on databases, its just
    that I dont have enough experience with databases to know which one is
    best for my task!


    Thanks in advance,

    Will McGugan
    --
    http://www.willmcgugan.com
    "".join({'*':'@','^':'.'}.get(c,0) or chr(97+(ord(c)-84)%26) for c in
    "jvyy*jvyyzpthtna^pbz")
     
    Will McGugan, Jun 22, 2005
    #1
    1. Advertising

  2. "Will McGugan" <> wrote in message
    news:42b97240$0$24467$...
    > Hi,
    >
    > I'd like to write a windows app that accesses a locally stored database.
    > There are a number of tables, the largest of which has 455,905 records.
    >
    > Can anyone recommend a database that runs on Windows, is fast /
    > efficient and can be shipped without restrictions or extra downloads?
    >
    > I have googled and found plenty of information on databases, its just
    > that I dont have enough experience with databases to know which one is
    > best for my task!


    If you are writing strictly for the MS Windows platform
    And
    If the database is running single user with a "locally stored database" on a
    Windows workstation.
    Then
    The MS Access file based (.mdb) system is hard to argue with.
    You wouldn't have to distribute the (rather expensive) Access application
    since this is little more than a front for the underlying DAO/ADO database
    libraries that are built into the warp and woof of MS Windows. Your Python
    application can address the DAO or ADO directly as these will libraries will
    be pre-installed and/or freely available for MS Windows. Fast, freely
    available, no license restrictions, and no need for extra downloads for a
    reasonably recent (Win2000, XP) operating system.

    On the other hand, if operating system portability were a concern (as it
    should be!), I might suggest MySQL.
    A Python/MySQL application can jump between Windows to Linux (all flavors!)
    to Unix to BSD without need to alter a single line of code.

    You were writing a Python app, weren't you :)
    Thomas Bartkus
     
    Thomas Bartkus, Jun 22, 2005
    #2
    1. Advertising

  3. Will McGugan

    Magnus Lycka Guest

    Will McGugan wrote:
    > Hi,
    >
    > I'd like to write a windows app that accesses a locally stored database.
    > There are a number of tables, the largest of which has 455,905 records.
    >
    > Can anyone recommend a database that runs on Windows, is fast /
    > efficient and can be shipped without restrictions or extra downloads?
    >
    > I have googled and found plenty of information on databases, its just
    > that I dont have enough experience with databases to know which one is
    > best for my task!


    Neither do we, considering that brief description.

    Will there be multiple simultaneous users?
    Multiple simultaneous writers?
    Do you require proper transaction management?
    (Or is it a pure read-only database, since you know
    exactly how many records the largest table has?)
    Do you need to make ad-hoc queries?
    What will your code look like?
    * Is it object-oriented?
    * Are there a lot of fixed relations between objects?
    Are there other requirements such as need for undo or
    change history management?
    Does the application work with small chunks of data at a time
    (such as in a ticket ordering system) or with larger chunks
    (such as in a web site CMS)?
    What size is it? It's a big difference between 455,905 integers
    and 455,905 mp3 files for instance...
    "A number of tables" tells us very little, more than suggesting
    that it's more than one... Ten and 200 makes a big difference.
     
    Magnus Lycka, Jun 22, 2005
    #3
  4. Will McGugan

    Magnus Lycka Guest

    Thomas Bartkus wrote:
    > If you are writing strictly for the MS Windows platform
    > And
    > If the database is running single user with a "locally stored database" on a
    > Windows workstation.
    > Then
    > The MS Access file based (.mdb) system is hard to argue with.


    I disagree. What does .mdb/jet without Access offer you that you
    don't get from e.g. SQLite except vendor lock-in and horrible
    deviations from the SQL standard? Ok, it does give you somewhat
    stronger typing, which you might possibly want, but if that's
    an issue, I'd suggest embedded firebird (if we want serverless).

    I'm not entirely sure something SQLish is the way to go though.

    Also, the best ODBC adaper for Python, mxODBC, isn't free. Last
    time I used adodbapi, it was a bit buggy, and pure ADO or DAO
    solutions don't follow the Python standard DB-API 2.
     
    Magnus Lycka, Jun 22, 2005
    #4
  5. I always figured a problem with using MySQL was distribution. Would
    you have to tell your users to install MySQL and then to leave the
    service running? I've never found an easy way to embed MySQL into a
    python app, and even if you could, would you then have to pay for it?

    -Greg


    On 6/22/05, Thomas Bartkus <> wrote:
    > "Will McGugan" <> wrote in message
    > news:42b97240$0$24467$...
    > > Hi,
    > >
    > > I'd like to write a windows app that accesses a locally stored database..
    > > There are a number of tables, the largest of which has 455,905 records.
    > >
    > > Can anyone recommend a database that runs on Windows, is fast /
    > > efficient and can be shipped without restrictions or extra downloads?
    > >
    > > I have googled and found plenty of information on databases, its just
    > > that I dont have enough experience with databases to know which one is
    > > best for my task!

    >
    > If you are writing strictly for the MS Windows platform
    > And
    > If the database is running single user with a "locally stored database" on a
    > Windows workstation.
    > Then
    > The MS Access file based (.mdb) system is hard to argue with.
    > You wouldn't have to distribute the (rather expensive) Access application
    > since this is little more than a front for the underlying DAO/ADO database
    > libraries that are built into the warp and woof of MS Windows. Your Python
    > application can address the DAO or ADO directly as these will libraries will
    > be pre-installed and/or freely available for MS Windows. Fast, freely
    > available, no license restrictions, and no need for extra downloads for a
    > reasonably recent (Win2000, XP) operating system.
    >
    > On the other hand, if operating system portability were a concern (as it
    > should be!), I might suggest MySQL.
    > A Python/MySQL application can jump between Windows to Linux (all flavors!)
    > to Unix to BSD without need to alter a single line of code.
    >
    > You were writing a Python app, weren't you :)
    > Thomas Bartkus
    >
    >
    > --
    > http://mail.python.org/mailman/listinfo/python-list
    >
     
    =?ISO-8859-1?Q?Gregory_Pi=F1ero?=, Jun 22, 2005
    #5
  6. Will McGugan

    Dan Guest

    Take a look at Firebird. It can be run in embedded mode. It might be
    overkill for your needs though...

    On 6/22/2005 10:37 AM, Gregory Piñero wrote:
    > I always figured a problem with using MySQL was distribution. Would
    > you have to tell your users to install MySQL and then to leave the
    > service running? I've never found an easy way to embed MySQL into a
    > python app, and even if you could, would you then have to pay for it?
    >
    > -Greg
    >
    >
    > On 6/22/05, Thomas Bartkus <> wrote:
    >
    >>"Will McGugan" <> wrote in message
    >>news:42b97240$0$24467$...
    >>
    >>>Hi,
    >>>
    >>>I'd like to write a windows app that accesses a locally stored database.
    >>>There are a number of tables, the largest of which has 455,905 records.
    >>>
    >>>Can anyone recommend a database that runs on Windows, is fast /
    >>>efficient and can be shipped without restrictions or extra downloads?
    >>>
    >>>I have googled and found plenty of information on databases, its just
    >>>that I dont have enough experience with databases to know which one is
    >>>best for my task!

    >>
    >>If you are writing strictly for the MS Windows platform
    >> And
    >>If the database is running single user with a "locally stored database" on a
    >>Windows workstation.
    >> Then
    >>The MS Access file based (.mdb) system is hard to argue with.
    >>You wouldn't have to distribute the (rather expensive) Access application
    >>since this is little more than a front for the underlying DAO/ADO database
    >>libraries that are built into the warp and woof of MS Windows. Your Python
    >>application can address the DAO or ADO directly as these will libraries will
    >>be pre-installed and/or freely available for MS Windows. Fast, freely
    >>available, no license restrictions, and no need for extra downloads for a
    >>reasonably recent (Win2000, XP) operating system.
    >>
    >>On the other hand, if operating system portability were a concern (as it
    >>should be!), I might suggest MySQL.
    >>A Python/MySQL application can jump between Windows to Linux (all flavors!)
    >>to Unix to BSD without need to alter a single line of code.
    >>
    >>You were writing a Python app, weren't you :)
    >>Thomas Bartkus
    >>
    >>
    >>--
    >>http://mail.python.org/mailman/listinfo/python-list
    >>
     
    Dan, Jun 22, 2005
    #6
  7. Will McGugan

    Dave Cook Guest

    On 2005-06-22, Will McGugan <> wrote:

    > I'd like to write a windows app that accesses a locally stored database.
    > There are a number of tables, the largest of which has 455,905 records.
    >
    > Can anyone recommend a database that runs on Windows, is fast /
    > efficient and can be shipped without restrictions or extra downloads?


    http://pysqlite.org

    Dave Cook
     
    Dave Cook, Jun 22, 2005
    #7
  8. Will McGugan" <> wrote in message
    news:42b97240$0$24467$...
    > Hi,
    >
    > I'd like to write a windows app that accesses a locally stored database.
    > There are a number of tables, the largest of which has 455,905 records.
    >
    > Can anyone recommend a database that runs on Windows, is fast /
    > efficient and can be shipped without restrictions or extra downloads?
    >
    > I have googled and found plenty of information on databases, its just
    > that I dont have enough experience with databases to know which one is
    > best for my task!


    If you are writing strictly for the MS Windows platform
    And
    If the database is running single user with a "locally stored database" on a
    Windows workstation.
    Then
    The MS Access file based (.mdb) system is hard to argue with.
    You wouldn't have to distribute the (rather expensive) Access application
    since this is little more than a front for the underlying DAO/ADO database
    libraries that are built into the warp and woof of MS Windows. Your Python
    application can address the DAO or ADO directly as these will libraries will
    be pre-installed and/or freely available for MS Windows. Fast, freely
    available, no license restrictions, and no need for extra downloads for a
    reasonably recent (Win2000, XP) operating system.

    On the other hand, if operating system portability were a concern (as it
    should be!), I might suggest MySQL.
    A Python/MySQL application can jump between Windows to Linux (all flavors!)
    to Unix to BSD without need to alter a single line of code.

    You were writing a Python app, weren't you :)
    Thomas Bartkus
     
    Thomas Bartkus, Jun 22, 2005
    #8
  9. Will McGugan

    Dan Guest

    On 6/22/2005 11:38 AM, Thomas Bartkus wrote:
    > Will McGugan" <> wrote in message
    > news:42b97240$0$24467$...
    >
    >>Hi,
    >>
    >>I'd like to write a windows app that accesses a locally stored database.
    >>There are a number of tables, the largest of which has 455,905 records.
    >>
    >>Can anyone recommend a database that runs on Windows, is fast /
    >>efficient and can be shipped without restrictions or extra downloads?
    >>
    >>I have googled and found plenty of information on databases, its just
    >>that I dont have enough experience with databases to know which one is
    >>best for my task!

    >
    >
    > If you are writing strictly for the MS Windows platform
    > And
    > If the database is running single user with a "locally stored database" on a
    > Windows workstation.
    > Then
    > The MS Access file based (.mdb) system is hard to argue with.
    > You wouldn't have to distribute the (rather expensive) Access application
    > since this is little more than a front for the underlying DAO/ADO database
    > libraries that are built into the warp and woof of MS Windows. Your Python
    > application can address the DAO or ADO directly as these will libraries will
    > be pre-installed and/or freely available for MS Windows. Fast, freely
    > available, no license restrictions, and no need for extra downloads for a
    > reasonably recent (Win2000, XP) operating system.
    >


    And then XP Autoupdate executes, some of those Access/MSDE libraries are
    updated, and you app is broken.
     
    Dan, Jun 22, 2005
    #9
  10. Will McGugan

    Magnus Lycka Guest

    Gregory Piñero wrote:
    > I always figured a problem with using MySQL was distribution. Would
    > you have to tell your users to install MySQL and then to leave the
    > service running? I've never found an easy way to embed MySQL into a
    > python app, and even if you could, would you then have to pay for it?


    There are more reasons than that not to use MySQL...
    See e.g. http://sql-info.de/mysql/gotchas.html

    It seems a lot of the most badly missed features are
    appearing in MySQL 5.0, but as features are added, I
    suppose the claimed advantages in performance and
    simplicity withers away, and these features can hardly
    be considered very mature yet. (One should also note
    that MySQL manuals have often claimed that features
    it lacked were useless, or even dangerous, until
    MySQL AB decided to implement them themselves... :)


    Also, the GPL/Commercial licence is not a good thing
    for commercial apps, particularly since this licence
    applies even to client libs.

    Recent PostgreSQL versions are stable, fast, and have
    native Windows versions.
     
    Magnus Lycka, Jun 22, 2005
    #10
  11. "Dan" <> wrote in message
    news:UJgue.20$...
    > On 6/22/2005 11:38 AM, Thomas Bartkus wrote:
    > > Will McGugan" <> wrote in message
    > > news:42b97240$0$24467$...
    > >

    >
    > And then XP Autoupdate executes, some of those Access/MSDE libraries are
    > updated, and you app is broken.


    Hasn't happened yet!

    For the record - I wouldn't recommend automatic updates of any kind for a
    Linux/MySQL system either. For precisely the same reasons.

    Thomas Bartkus
     
    Thomas Bartkus, Jun 22, 2005
    #11
  12. In article <UJgue.20$>, Dan <> wrote:
    .
    .
    .
    >> You wouldn't have to distribute the (rather expensive) Access application
    >> since this is little more than a front for the underlying DAO/ADO database
    >> libraries that are built into the warp and woof of MS Windows. Your Python
    >> application can address the DAO or ADO directly as these will libraries will
    >> be pre-installed and/or freely available for MS Windows. Fast, freely
    >> available, no license restrictions, and no need for extra downloads for a
    >> reasonably recent (Win2000, XP) operating system.
    >>

    >
    >And then XP Autoupdate executes, some of those Access/MSDE libraries are
    >updated, and you app is broken.


    Are you saying that Python-based applications are particularly
    vulnerable in this all-too-common scenario? If so, I'm not
    getting it; why is the architecture described more fragile than
    more traditional Windows-oriented development patterns? If not,
    then, ... well then I truly don't get your point.
     
    Cameron Laird, Jun 22, 2005
    #12
  13. Will McGugan

    Dave Cook Guest

    On 2005-06-22, Cameron Laird <> wrote:

    > Are you saying that Python-based applications are particularly
    > vulnerable in this all-too-common scenario? If so, I'm not
    > getting it; why is the architecture described more fragile than
    > more traditional Windows-oriented development patterns? If not,
    > then, ... well then I truly don't get your point.


    Maybe the point is the downside of depending on installed DLLs rather than
    shipping your own.

    Dave Cook
     
    Dave Cook, Jun 22, 2005
    #13
  14. Will McGugan

    Dan Guest

    On 6/22/2005 1:14 PM, Dave Cook wrote:
    > On 2005-06-22, Cameron Laird <> wrote:
    >
    >
    >>Are you saying that Python-based applications are particularly
    >>vulnerable in this all-too-common scenario? If so, I'm not
    >>getting it; why is the architecture described more fragile than
    >>more traditional Windows-oriented development patterns? If not,
    >>then, ... well then I truly don't get your point.

    >
    >
    > Maybe the point is the downside of depending on installed DLLs rather than
    > shipping your own.
    >
    > Dave Cook


    Yes, DLL hell.
     
    Dan, Jun 22, 2005
    #14
  15. Will McGugan

    Ray Cote Guest

    At 3:14 PM +0100 6/22/05, Will McGugan wrote:
    >Hi,
    >
    >I'd like to write a windows app that accesses a locally stored database.
    >There are a number of tables, the largest of which has 455,905 records.
    >
    >Can anyone recommend a database that runs on Windows, is fast /
    >efficient and can be shipped without restrictions or extra downloads?
    >
    >I have googled and found plenty of information on databases, its just
    >that I dont have enough experience with databases to know which one is
    >best for my task!
    >
    >
    >Thanks in advance,
    >
    >Will McGugan


    We use Firebird for that.
    <http://www.firebirdsql.org>
    --Ray
    --

    Raymond Cote
    Appropriate Solutions, Inc.
    PO Box 458 ~ Peterborough, NH 03458-0458
    Phone: 603.924.6079 ~ Fax: 603.924.8668
    rgacote(at)AppropriateSolutions.com
    www.AppropriateSolutions.com
     
    Ray Cote, Jun 22, 2005
    #15
  16. In article <3tiue.27$>, Dan <> wrote:
    >On 6/22/2005 1:14 PM, Dave Cook wrote:
    >> On 2005-06-22, Cameron Laird <> wrote:
    >>
    >>
    >>>Are you saying that Python-based applications are particularly
    >>>vulnerable in this all-too-common scenario? If so, I'm not
    >>>getting it; why is the architecture described more fragile than
    >>>more traditional Windows-oriented development patterns? If not,
    >>>then, ... well then I truly don't get your point.

    >>
    >>
    >> Maybe the point is the downside of depending on installed DLLs rather than
    >> shipping your own.
    >>
    >> Dave Cook

    >
    >Yes, DLL hell.


    ?

    OK, I'm with you part of the way. Typical "Access" developers
    are *always* involved with DLL hell, right? You're surely not
    saying that Python worsens that frustration, are you?
     
    Cameron Laird, Jun 22, 2005
    #16
  17. Will McGugan

    Will McGugan Guest

    Thanks for the replies. I think I'm going to go with sqllite for now.

    For the curious, Im writing an interface to a nutritional database. So
    you can type in a foodstuff and it will tell you whats in it..


    Will McGugan
    --
    http://www.willmcgugan.com
    "".join({'*':'@','^':'.'}.get(c,0) or chr(97+(ord(c)-84)%26) for c in
    "jvyy*jvyyzpthtna^pbz")
     
    Will McGugan, Jun 22, 2005
    #17
  18. Will McGugan

    Peter Hansen Guest

    Will McGugan wrote:
    > Thanks for the replies. I think I'm going to go with sqllite for now.


    Your list didn't mention a few things that might be critical.
    Referential integrity? Type checking? SQLite currently supports
    neither. Just make sure you check the list of supported features to see
    that it really does what you need.

    -Peter
     
    Peter Hansen, Jun 23, 2005
    #18
  19. On Wed, 22 Jun 2005 10:07:12 -0500, "Thomas Bartkus"
    <> declaimed the following in comp.lang.python:


    > The MS Access file based (.mdb) system is hard to argue with.
    > You wouldn't have to distribute the (rather expensive) Access application
    > since this is little more than a front for the underlying DAO/ADO database
    > libraries that are built into the warp and woof of MS Windows. Your Python


    The RDBM engine, used by Access, has the name JET... so more
    formally, it is the JET libraries that handle .mdb files. Newer versions
    of Access also are designed to handle M$ SQL Server/MSDE as "Access
    Projects".

    >
    > On the other hand, if operating system portability were a concern (as it
    > should be!), I might suggest MySQL.
    > A Python/MySQL application can jump between Windows to Linux (all flavors!)
    > to Unix to BSD without need to alter a single line of code.
    >

    Firebird might be a contender... Or if someone ever released a
    version of MySQLdb built against the embedded library (so no separate
    server is needed -- I suspect distribution licenses get in the way of
    that)

    --
    > ============================================================== <
    > | Wulfraed Dennis Lee Bieber KD6MOG <
    > | Bestiaria Support Staff <
    > ============================================================== <
    > Home Page: <http://www.dm.net/~wulfraed/> <
    > Overflow Page: <http://wlfraed.home.netcom.com/> <
     
    Dennis Lee Bieber, Jun 23, 2005
    #19
  20. On Wed, 22 Jun 2005 19:21:37 +0200, Magnus Lycka <>
    declaimed the following in comp.lang.python:


    > It seems a lot of the most badly missed features are
    > appearing in MySQL 5.0, but as features are added, I
    > suppose the claimed advantages in performance and
    > simplicity withers away, and these features can hardly
    > be considered very mature yet. (One should also note
    > that MySQL manuals have often claimed that features
    > it lacked were useless, or even dangerous, until
    > MySQL AB decided to implement them themselves... :)
    >

    Might depend on how much is purely new code, and how much might
    be purloined from the former SAP-DB (now "MaxDB by MySQL"), since a lot
    of those features probably existed in the latter.

    --
    > ============================================================== <
    > | Wulfraed Dennis Lee Bieber KD6MOG <
    > | Bestiaria Support Staff <
    > ============================================================== <
    > Home Page: <http://www.dm.net/~wulfraed/> <
    > Overflow Page: <http://wlfraed.home.netcom.com/> <
     
    Dennis Lee Bieber, Jun 23, 2005
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. tom
    Replies:
    4
    Views:
    14,281
    jpowers5882
    Oct 24, 2008
  2. Replies:
    1
    Views:
    362
  3. =?Utf-8?B?R2lhbmNhcmxv?=

    debug Windows app works but, not web app

    =?Utf-8?B?R2lhbmNhcmxv?=, Sep 26, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    340
    =?Utf-8?B?R2lhbmNhcmxv?=
    Sep 26, 2005
  4. Neal D. Becker
    Replies:
    2
    Views:
    295
    Helmut Jarausch
    Oct 12, 2004
  5. EP
    Replies:
    6
    Views:
    293
    Paul Boddie
    Oct 6, 2006
Loading...

Share This Page