473,385 Members | 1,445 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

how to export data from ZODB to text files

ls
Hi All,

I looking for help with ZODB data export to text file. I have file
Data.fs (file becomes from Plone CMS) and I have to display content
structure, data like intro, body of article, etc and save it in to
simple file. However I can't use Plone XML export because is broken,
Zope Corp. set low priority for this bug, so I have to find other way
how to digg in to data.

Could you point me in to some Python code examples, code contributions
and so on.

Thank you for any suggestions,

Lukasz

Jul 19 '05 #1
10 7616
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
Jul 19 '05 #2
ls
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?

--
Lukasz

Jul 19 '05 #3
On Tue, 7 Jun 2005 14:48:34 +0000 (UTC),
l.********@gazeta-dot-pl.no-spam.invalid (ls) declaimed the following in
comp.lang.python:

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.
I've not looked into ZODB directly, but as I understand it...

ZODB is an object store, so it doesn't really have a "structure"
in terms of RDBM tables. As I understand it, loading "data" from ZODB
creates instances of various classes; you probably (if you don't already
/know/ the nature of the classes) will have to look into each instance
to find the attributes, etc.

-- ================================================== ============ <
wl*****@ix.netcom.com | Wulfraed Dennis Lee Bieber KD6MOG <
wu******@dm.net | Bestiaria Support Staff <
================================================== ============ <
Home Page: <http://www.dm.net/~wulfraed/> <
Overflow Page: <http://wlfraed.home.netcom.com/> <

Jul 19 '05 #4
l.********@gazeta-dot-pl.no-spam.invalid (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
Jul 19 '05 #5
ls
> 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?

Hi Jonh,

Thank you for your reply.

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)
Now after your answer, I see that I will be not able to finish this
taks by myself ...

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?

--
Lukasz

Jul 19 '05 #6
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
Jul 19 '05 #7
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

Jul 19 '05 #8
ls
Hi Josef,

Thank you so much. I will ask our Plone administrator to test your
script and I will write about result here.

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?

@Max
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.

Could you contribute code which do export data?

--
Lukasz

Jul 19 '05 #9
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

Jul 19 '05 #10
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/art...p?p=23413&rl=1

* A Simple ZODB viewer in wxPython:
http://aspn.activestate.com/ASPN/Coo.../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

Jul 19 '05 #11

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

14
by: atse | last post by:
Hi experts, I retrieve data from the database and display on ASP, then I export these data to a file, like Excel (the best) or text file. Is it possible? I think it is possible, but how can I do...
1
by: Harald Armin Massa | last post by:
Hello, I am using ZODB "standalone" in version 3.3.1 within some application. Now I learn that the 3.3.x branch of ZODB is "retired". No problem so far, everything is running fine. BUT......
1
by: Bridget Willey | last post by:
I am using ACT 6 and am trying to "split" the database between records for customers and junk records. The accounts designated as "customers" have that word in the ID field, and I am using that...
6
by: Robin Cushman | last post by:
Hi all, I need some help -- I'm working with an A2K database, using DAO, and am trying to read records into a Crystal Report and then export it to a folder on our network as an Excel...
3
by: Jorge Cecílio | last post by:
Hi! I would like to export some MS-Access reports output to pdf. However, the only possibility offered by Access (afaik) for me to export formatted output is snp (snapshot) (I use MS-Office...
6
by: Mudcat | last post by:
Hi, I am trying to build a tool that analyzes stock data. Therefore I am going to download and store quite a vast amount of it. Just for a general number - assuming there are about 7000 listed...
5
by: vd12005 | last post by:
Hello, While playing to write an inverted index (see: http://en.wikipedia.org/wiki/Inverted_index), i run out of memory with a classic dict, (i have thousand of documents and millions of terms,...
0
by: robert | last post by:
I have (large) disk files connected with ZODB objects and want the disk files to be removed when the Python/ZODB object all finalizes. Is it possible to get a kind of reliable __del__ signal for...
3
by: =?Utf-8?B?YzY3NjIyOA==?= | last post by:
Hi all, I have a question for you. I have a .csv file which has many lines of data. Each line has many data fields which are delimited by ",". Now I need to extract part of data from this...
1
by: CloudSolutions | last post by:
Introduction: For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.