[Zope-DB] Exporting data to mysql

Sukhwinder Singh ssruprai@hotmail.com
Thu, 26 Jun 2003 01:03:16 +0530


Hello,

    I have a web application which is written by some other person using
zope/zodb/python. Now client wants to write this application using
php/mysql. But existing data stored in zodb database has to be exported to
mysql database. Zodb uses fileStorage to store data. I have tried zope's xml
export but that doesn't make any sense to me.

    Now problem is I don't have much knowledge about zope. I have only basic
knowledge that everything is stored as an object. I also have some knowledge
of python. I have searched the web for any information about zodb but could
not find much. I have only 2-3 days so I cannot learn zope then zodb and
then python. My problems are:

    1. How do I identify which of these objects store data(tables) because
zope stores everything (images, dhtml files, folders etc) as objects so I
want only objects which store data(rows) and then how many of these tables
are there?

    2.How do I determine how many fields are there in each data object and
what are their names and data types.

    3. How do I extract data from these objects and then store that to some
intermediate format (csv) and then import it to mysql.

    So what I want to do is introspection.

    I don't know where to start.

    There are many sub-folders under this web applications. I know that I
have to use external methods and I have tried it like this:

        from ZODB import FileStorage, DB
          storage = FileStorage.FileStorage('data.fs')
          db = DB( storage )
          connection = db.open()
          root = connection.root() // up to this point it works.

    now when I try something like:

          students = root['students']

      error message is displayed that students not found.

      For this reason I want to determine in which objects data is stored so
that I can get its values.
      I also have to determine the name of the attributes (fields) used in
this objects so that I can create mysql table fields of the same name and
data type.

      If possible, please give me complete code which I can just copy and
paste in external method file. If that is no possible then provide some
other working example or explain the steps in detail as I don't have much
knowledge about zope and co.

      --Sukhwinder Singh