Python, xml, databases, ...

Discussion in 'Python' started by Zunbeltz Izaola, Dec 3, 2003.

  1. Hi!

    I am planning a program and I need some advice about what tool to use.

    Basically my program will deal with a object A. A is a list like
    object with same attributtes and a list of objects B. B is also a list
    like object with attributes and a list of object C.

    class A:
    Name = ""
    ...
    List = [] # List of B

    class B:
    Name = ""
    ...
    List = [] # List of C

    ....

    I want to store the information in a A object in a file. The structure
    is a tree-like structure and I think XML is a good choice. I want to
    know what model SAX or DOM, will be better to write/read the
    information from the file. Is posible the files to get big (>1MB) and
    the XML HOWTO recommend to use SAX, is that ok? what would be eaiser?

    In a future i want to be able to do search and in different instances
    of object A. I think i can storoe the information in a database
    format. What tool are suitable for this task? I have read somethin
    about MySQL and PostgreSQL, but i think they are only for servers, no
    for program, is that all right?

    I would build a GUI for the program (presumibly with wxPython). I want
    to separate the GUI layer from the program layer. For comunication of
    this two layer I have think in asyncore, but i have read something
    about twisted and piro. Can anyone give my his/her opinion about this?

    Thanks in advance

    Zunbeltz


    --
    Remove XXX from email: X
    Zunbeltz Izaola, Dec 3, 2003
    #1
    1. Advertising

  2. Zunbeltz Izaola wrote:
    > I want to store the information in a A object in a file. The structure
    > is a tree-like structure and I think XML is a good choice. I want to
    > know what model SAX or DOM, will be better to write/read the
    > information from the file. Is posible the files to get big (>1MB) and
    > the XML HOWTO recommend to use SAX, is that ok? what would be eaiser?
    >
    > In a future i want to be able to do search and in different instances
    > of object A. I think i can storoe the information in a database
    > format.


    I think you want to be clear whether you want a database or not. If you
    want to put the data into a database, you probably do not want to also put
    it into a file structure. Although you certainly could then store to file
    in the database, I think you would end up loosing the usefulness of one or
    the other (or both).

    > What tool are suitable for this task? I have read somethin
    > about MySQL and PostgreSQL, but i think they are only for servers, no
    > for program, is that all right?


    What do you mean by 'they are only for servers'?

    Any machine can run a service (such as MySQL or PostgreSQL), and if it
    offers that service to other machines then it is acting as 'server', or it
    can just use it locally.

    What platform are you planning to run this on? If it is Linux, then either
    MySQL or PostgreSQL are easy options - most distros have pre-compiled
    versions out of the box.

    On Windows, both MySQL and PostgreSQL rely on the Cygwin dll. It looks like
    MySQL has an easier Windows install, but their use of the cygwin dll
    outside of Cygwin proper has serious stability consequences if the user
    installs another cygwin based program. PostgreSQL is a 'proper' cygwin
    program, but will be harder for non-unix/linux people to
    install/administer.

    You could also consider Firebird (http://firebird.sourceforge.net/) it has a
    native Windows version as well as a Unix/Linux version) or SQLite
    (http://www.hwaci.com/sw/sqlite/) with PySQLite
    (http://pysqlite.sourceforge.net/manual.html).

    There is also GadflyB5 (http://gadfly.sourceforge.net/) which looks like it
    is written in pure python. There are probably other options too.

    > I would build a GUI for the program (presumibly with wxPython). I want
    > to separate the GUI layer from the program layer. For comunication of
    > this two layer I have think in asyncore, but i have read something
    > about twisted and piro. Can anyone give my his/her opinion about this?


    Funny, I asked almost the same question about 20 minutes before you did.

    Cheers,

    Rasjid.
    Rasjid Wilcox, Dec 3, 2003
    #2
    1. Advertising

  3. > I think you want to be clear whether you want a database or not. If you
    > want to put the data into a database, you probably do not want to also put
    > it into a file structure. Although you certainly could then store to file
    > in the database, I think you would end up loosing the usefulness of one or
    > the other (or both).
    >


    I think i prefer first to store the information in a file. And then
    see while the program is growing if it worth to use a database.

    > > What tool are suitable for this task? I have read somethin
    > > about MySQL and PostgreSQL, but i think they are only for servers, no
    > > for program, is that all right?

    >
    > What do you mean by 'they are only for servers'?
    >
    > Any machine can run a service (such as MySQL or PostgreSQL), and if it
    > offers that service to other machines then it is acting as 'server', or it
    > can just use it locally.


    Up, I concept missundertand of mine. I want to know if
    MySQL/PostgreSQL are only used in large web servers and such things,
    or are also used in small programs that both the server and client
    runs localy.

    >
    > What platform are you planning to run this on? If it is Linux, then either
    > MySQL or PostgreSQL are easy options - most distros have pre-compiled
    > versions out of the box.
    >


    I want to have the program in both linux and windows.

    > On Windows, both MySQL and PostgreSQL rely on the Cygwin dll. It looks like
    > MySQL has an easier Windows install, but their use of the cygwin dll
    > outside of Cygwin proper has serious stability consequences if the user
    > installs another cygwin based program. PostgreSQL is a 'proper' cygwin
    > program, but will be harder for non-unix/linux people to
    > install/administer.
    >
    > You could also consider Firebird (http://firebird.sourceforge.net/) it has a
    > native Windows version as well as a Unix/Linux version) or SQLite
    > (http://www.hwaci.com/sw/sqlite/) with PySQLite
    > (http://pysqlite.sourceforge.net/manual.html).
    >
    > There is also GadflyB5 (http://gadfly.sourceforge.net/) which looks like it
    > is written in pure python. There are probably other options too.
    >


    Can you give me an advaice about what has a better easy to
    use/performance ratio.

    > > I would build a GUI for the program (presumibly with wxPython). I want
    > > to separate the GUI layer from the program layer. For comunication of
    > > this two layer I have think in asyncore, but i have read something
    > > about twisted and piro. Can anyone give my his/her opinion about this?

    >
    > Funny, I asked almost the same question about 20 minutes before you did.


    I have no see the question yet :)
    Cheers,

    zunbeltz


    > Cheers,
    >
    > Rasjid.
    >


    --
    Remove XXX from email: X
    Zunbeltz Izaola, Dec 3, 2003
    #3
  4. Zunbeltz Izaola wrote:

    > Up, I concept missundertand of mine. I want to know if
    > MySQL/PostgreSQL are only used in large web servers and such things,
    > or are also used in small programs that both the server and client
    > runs localy.


    I've definitely seen MySQL used where both server and client run locally,
    and I'm sure there is plenty of the same with PostgreSQL.

    >> What platform are you planning to run this on? If it is Linux, then
    >> either MySQL or PostgreSQL are easy options - most distros have
    >> pre-compiled versions out of the box.

    >
    > I want to have the program in both linux and windows.
    >
    >> On Windows, both MySQL and PostgreSQL rely on the Cygwin dll. It looks
    >> like MySQL has an easier Windows install, but their use of the cygwin dll
    >> outside of Cygwin proper has serious stability consequences if the user
    >> installs another cygwin based program. PostgreSQL is a 'proper' cygwin
    >> program, but will be harder for non-unix/linux people to
    >> install/administer.
    >>
    >> You could also consider Firebird (http://firebird.sourceforge.net/) it
    >> has a native Windows version as well as a Unix/Linux version) or SQLite
    >> (http://www.hwaci.com/sw/sqlite/) with PySQLite
    >> (http://pysqlite.sourceforge.net/manual.html).
    >>
    >> There is also GadflyB5 (http://gadfly.sourceforge.net/) which looks like
    >> it
    >> is written in pure python. There are probably other options too.
    >>

    >
    > Can you give me an advaice about what has a better easy to
    > use/performance ratio.


    Unfortunately, no, since I'm at about the same stage you are (ie, trying to
    work out what to use).

    I have _personally_ rulled out MySQL on Windows (due to it packaging the
    cygwin dll in a non-standard way, since I use Cygwin at work), and will
    only consider PostgreSQL on Windows if I can make the install trivial for a
    non-technical user.

    SQLite does not support Foreign Key constraints, so I think it is out for
    me. Gadfly is not multi-user, so it is also out for me also.

    Firebird is the only full featured open-source database that I know of that
    has native binaries (non-cygwin) for Windows, and also runs on Linux and
    Mac (although a native Windows port of PostgreSQL is in progress).

    Another option that I have is to on Windows use the MDAC component and use a
    MS Access backend database, and use MySQL or PostgreSQL on Linux/Mac.
    See http://www.markcarter.me.uk/computing/python/ado.html for some info on
    how to access a MS Access database from Python on Windows.

    Without knowing what SQL feature set _you_ are after, it is impossible to
    know what is the best option for you.

    >> > I would build a GUI for the program (presumibly with wxPython). I want
    >> > to separate the GUI layer from the program layer. For comunication of
    >> > this two layer I have think in asyncore, but i have read something
    >> > about twisted and piro. Can anyone give my his/her opinion about this?

    >>
    >> Funny, I asked almost the same question about 20 minutes before you did.

    >
    > I have no see the question yet :)


    My question was entitled 'Building a GUI agnostic database application'.

    Cheers,

    Rasjid.
    Rasjid Wilcox, Dec 3, 2003
    #4
  5. Rasjid Wilcox <> writes:


    > >> On Windows, both MySQL and PostgreSQL rely on the Cygwin dll. It looks
    > >> like MySQL has an easier Windows install, but their use of the cygwin dll
    > >> outside of Cygwin proper has serious stability consequences if the user
    > >> installs another cygwin based program. PostgreSQL is a 'proper' cygwin
    > >> program, but will be harder for non-unix/linux people to
    > >> install/administer.
    > >>
    > >> You could also consider Firebird (http://firebird.sourceforge.net/) it
    > >> has a native Windows version as well as a Unix/Linux version) or SQLite
    > >> (http://www.hwaci.com/sw/sqlite/) with PySQLite
    > >> (http://pysqlite.sourceforge.net/manual.html).
    > >>
    > >> There is also GadflyB5 (http://gadfly.sourceforge.net/) which looks like
    > >> it
    > >> is written in pure python. There are probably other options too.
    > >>

    > >
    > > Can you give me an advaice about what has a better easy to
    > > use/performance ratio.

    >
    > Unfortunately, no, since I'm at about the same stage you are (ie, trying to
    > work out what to use).
    >
    > I have _personally_ rulled out MySQL on Windows (due to it packaging the
    > cygwin dll in a non-standard way, since I use Cygwin at work), and will
    > only consider PostgreSQL on Windows if I can make the install trivial for a
    > non-technical user.
    >
    > SQLite does not support Foreign Key constraints, so I think it is out for
    > me. Gadfly is not multi-user, so it is also out for me also.
    >
    > Firebird is the only full featured open-source database that I know of that
    > has native binaries (non-cygwin) for Windows, and also runs on Linux and
    > Mac (although a native Windows port of PostgreSQL is in progress).
    >
    > Another option that I have is to on Windows use the MDAC component and use a
    > MS Access backend database, and use MySQL or PostgreSQL on Linux/Mac.
    > See http://www.markcarter.me.uk/computing/python/ado.html for some info on
    > how to access a MS Access database from Python on Windows.
    >
    > Without knowing what SQL feature set _you_ are after, it is impossible to
    > know what is the best option for you.
    >


    Thanks for your advaice and i will think more carefully what i nedd
    and read information about the dbs you mention.

    > >
    > > I have no see the question yet :)

    >
    > My question was entitled 'Building a GUI agnostic database application'.
    >


    I am reading it know.

    thanks

    Zunbeltz

    > Cheers,
    >
    > Rasjid.
    >


    --
    Remove XXX from email: X
    Zunbeltz Izaola, Dec 3, 2003
    #5
  6. Zunbeltz Izaola

    Joe Francia Guest

    Zunbeltz Izaola wrote:
    > Hi!
    >

    <snip>
    >
    > I want to store the information in a A object in a file. The structure
    > is a tree-like structure and I think XML is a good choice. I want to
    > know what model SAX or DOM, will be better to write/read the
    > information from the file. Is posible the files to get big (>1MB) and
    > the XML HOWTO recommend to use SAX, is that ok? what would be eaiser?
    >
    > Zunbeltz


    In addition to the other suggestions made, you may want to consider the
    embeddable Berkeley XML database, which may fit your needs better (or
    not ;>):
    http://www.sleepycat.com/download/index.shtml

    If you are using Windows, you can get precompiled Python (and Java)
    bindings here:
    http://www.klamann-software.de/Community/index.html

    Peace,
    Joe
    Joe Francia, Dec 3, 2003
    #6
    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. fux
    Replies:
    0
    Views:
    455
  2. Bren

    Public XML databases?

    Bren, Jul 22, 2003, in forum: XML
    Replies:
    4
    Views:
    447
  3. Harry Zoroc
    Replies:
    1
    Views:
    930
    Gregory Vaughan
    Jul 12, 2004
  4. Ken North
    Replies:
    0
    Views:
    596
    Ken North
    Jul 14, 2005
  5. Pieter Claerhout

    RE: SUSPECT: Re: Python, xml, databases, ...

    Pieter Claerhout, Dec 3, 2003, in forum: Python
    Replies:
    2
    Views:
    308
    Cameron Laird
    Dec 4, 2003
Loading...

Share This Page