Re: how to export data from ZODB to text files
Hi Lucasz, Thank you so much. I will ask our Plone administrator to test your script and I will write about result here. You are wellcome. I think it is one of the easiest way of doing it. I thought also about Python script like //connect to database from ZODB import FileStorage, DB storage = FileStorage.FileStorage('Data.fs') db = DB(storage) conn = db.open() dbroot = conn.root() //here should be interation for DB which saves attributes output in to file I'm not able to write the second part, but I think that this shouldn`t be a problem for experienced Python developer. How complex will be script like above? I have to say it would be interesting to do something like that with ZODB. Specially if you only have the Data.fs and don't have access to the original Plone site. But I don't know how to do it. You may ask in the ZODB list: http://lists.zope.org/mailman/listinfo/zodb-dev Regards, Josef -- http://mail.python.org/mailman/listinfo/python-list
Re: how to export data from ZODB to text files
Hi again, I thought also about Python script like //connect to database from ZODB import FileStorage, DB storage = FileStorage.FileStorage('Data.fs') db = DB(storage) conn = db.open() dbroot = conn.root() I just found an information that may be useful for you: * ZODB for Python Programmers By Michael Pelletier: http://www.informit.com/articles/article.asp?p=23413rl=1 * A Simple ZODB viewer in wxPython: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/409012 The first link contains some useful examples and explanations. The second one could help you to see how your zodb is organized. In the links that Peter post, there is also an useful powerpoint presentation. According to the first link, the ZODB is a persistent dictionary that you can access like: db = DB(storage) connection = db.open() root = connection.root() If I'm not wrong, you could see what objects are in root of your zodb by doing: print root.keys() After that you could get your plone site by doing: ploneSite = root['ploneFolder'] Where if I'm not wrong, ploneFolder may be a key in the root dictionary. Then if plone is like CMF, it must have a portal_catalog instance in it, so, you can get it by: catalog = getattr(ploneSite,'portal_catalog',None) If at this point catalog = None, then you have to print the objects in the plone site by doing: print ploneSite.objectIds() Once you find the catalog object, you could try the script I post before from the command line. I haven't tested this, but I hope it helps. Regards, Josef Meile -- http://mail.python.org/mailman/listinfo/python-list
Re: how to export data from ZODB to text files
ls wrote: I'm experienced mostly in C, PHP, also with some backgrounds of CPP and Java, but I'm totaly new in Python ... What do you suggest in this case? The simplest approach is to run Zope with the Data.fs file. If you have access to the zope instance you want to export from, you only need to write an external method in Zope to export the data you want. Its pretty easy that way. -- hilsen/regards Max M, Denmark http://www.mxm.dk/ IT's Mad Science -- http://mail.python.org/mailman/listinfo/python-list
Re: how to export data from ZODB to text files
Hi Lukasz, Yes, I'm traing to escape from Zope-land, to be more clarify I want to migrate from Plone to PHP Application, which uses MySQL database engine, so I have to move all data from ZODB to MySQL. I suppose that python script shouldn`t be so complex. I need just iterate ZODB and write attributes like Intro, Body of article to file for example. I need export Plone content hierarchy like Home | | - - - Folder 1 (Title, Intro, Body) || - - - Article (Title, Intro, Body) | | - - - Folder 2 (Title, Intro, Body) I haven't done that with Plone, but with CMF, which is the base of Plone. So, I guess it would be almost the same. You even don't need the product Peter suggested; you could do a python script inside your plone site, which searches all the objects you want and print it in form of a pipe '|' delimited list. Then, once you define your tables in mysql, you can import the data by copying the output of your script and saving it into a text file. This is how my script looks like: catalog=context.portal_catalog jobs=catalog( { 'meta_type': 'Internship' } ) OID = 1 for metaJob in jobs: jobData=catalog.getobject(metaJob.data_record_id_) print %i|%s|%s|%s|%s|%s|%s|%s| % \ (OID, jobData.companyName, jobData.companyVision, jobData.description, jobData.positionOffered, jobData.jobProfile, jobData.contact, jobData.country) OID += 1 return printed Off course, this only work assuming that your fields aren't files like images or PDFs. Regards, Josef -- http://mail.python.org/mailman/listinfo/python-list
Re: how to export data from ZODB to text files
ls wrote: I looking for help with ZODB data export to text file. I have file Data.fs [snip] Could you point me in to some Python code examples, code contributions and so on. You can download the standalone ZODB code and run it under regular Python without Zope installed or involved, and use that to access your Data.fs file directly. See http://www.zope.org/Products/StandaloneZODB This page lists much documentation (near the bottom): http://www.zope.org/Wikis/ZODB/FrontPage -Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: how to export data from ZODB to text files
[EMAIL PROTECTED] (ls) writes: Hi Peter, Thank you for your reply. I already can access file using code from ZODB import FileStorage, DB storage = FileStorage.FileStorage('mydatabase.fs') db = DB(storage) connection = db.open() root = connection.root() But this is the point where my konwledge ends since I`m not a Python programmer. I don`t know what is the structure of ZODB, I`m just looking for code, or some tool, which I can use to export data from Data.ts file to plain text file. I`m looking for easiest way to export data from ZODB and put it to MySQL later. Do you know what way I should choose? I have to know Python language to finish this task? Yes, you do (or hire somebody else who does). I'm afraid you may really have your work cut out here! It really all depends on the complexity of your application, and how well it was written. But if you're shiny-new to Python, Zope, OO databases and all the ideas that go with these kinds of systems, you may be at the bottom of a longish ladder -- what's your background? ZODB is relatively simple and probably has relatively few quirks as OO persistance systems go, but still, learning ZODB and a new language at the same time might be confusing (not to mention finding your way around the application you're working with). And Zope is... complicated. Why are you doing this in the first place? Trying to escape from Zope-land? Exporting data on a regular basis, for use in another app? John -- http://mail.python.org/mailman/listinfo/python-list