[Tutor] associating two objects without ORM and processing a text file
neubyr
neubyr at gmail.com
Mon Feb 11 23:48:21 CET 2013
Thank you for your inputs Dave. That's really helpful. Reply in-line below:
On Sun, Feb 10, 2013 at 11:56 PM, Dave Angel <davea at davea.name> wrote:
> On 02/11/2013 12:14 AM, neubyr wrote:
>
>> I have a text file with each line in following format:
>>
>> Book Name, Author Name, Genre, Publication Date
>>
>> I would like to perform following queries on this file:
>> * Get all books written by an author
>> * Remove all books of an author
>> * Get information about a book (pretty print matching line!)
>> * Get books of particular genre
>>
>> Also, I would like to add and delete entries in this file. I am not
>> planning to use any database for this purpose and would like to get better
>> grasp on file parsing and classes/OOP.
>>
>
> I take it from this that this is a class assignment, and that neither
> speed nor enormous data capacity nor concurrent operation is a requirement.
> But your professor may have other requirements that you haven't told us
> about.
Not a class assignment, just picked up this problem as a learning exercise.
>
>
> I need some help in creating classes
>
>> and following are my initial thoughts:
>>
>> # Create a class for Book object
>> class Book:
>> atributes: name, author_name, genre, publication-date
>>
>> # Create
>> Author:
>> attribute(s): name
>>
>
> Is this in order to save space, since each Book instance can then have a
> reference to an Author object, rather than a reference to a string
> containing the Author's name.
>
> If you deem this class useful, then don't you also want one for Genre ?
Hmm.. I didn't think about saving space by reference an object. I created
separate class thinking from database/ORM perspective. I am not planning to
use it right now anyway, but if I was creating a non-trivial application
with database models then I would have had Books tables, Authors tables
etc..
I think I don't need it here though.
>
>
>
>
>> # Create class for reading and writing to the file
>> class Booksfile:
>> methods: ??
>>
>
> Why ? Are you transliterating this from Java ?
Scrapped that class - adding add/list/delete methods in Book class. Thanks
for pointing it out.
>
>
>
>>
>> * How do I associate/relate Book and Author classes so that it will help
>> me
>> in getting information like 'get list of books written by an author'? Data
>> attribute?
>>
>
> If performance doesn't matter, then create one list of Book instances, and
> search it for whichever characteristics you like.
>
>
>
> * Should I create a new Booksfile object for reading, writing and deleting
>> entries in the file OR add corresponding methods to the book object
>> itself?
>>
>
> Neither, a pair of regular functions will do fine. One that loads when
> you start the program, and another that saves the file when you exit. If
> you really expect to update the file incrementally, deleting entries in it,
> then think hard about your decision to roll your own database. A text file
> isn't random access.
>
>
>
>> I am not planning to use SQLite or any database and would like to use text
>> file only. Appreciate any help on designing such application.
>>
>>
>>
> The real question is where you might proceed after meeting these first
> requirements. For example, if you expect the list to grow to a few hundred
> million entries, then you'll need to be very careful about layout. And
> starting and exiting the program would be very slow, since you can do
> nothing till all the data has been loaded in and converted to objects.
>
> Or perhaps you'll want to have another file with additional author data,
> associated with the first by carefully spelling the author's name the same
> in all cases. In that case, having a separate Author class makes great
> sense. So if you expect to grow in that direction, then you should create
> the class now, even though it has only one attribute.
>
>
> --
> DaveA
>
> ______________________________**_________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor>
>
- N
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20130211/63a854e2/attachment.html>
More information about the Tutor
mailing list