Sure :)
If you don't know how to write couchdb-python models, here is a good example:
http://bitbucket.org/bbangert/kai/src/c5a69c10aa0c/kai/model/human.py

You can learn a lot by studying that application's source.

Regards


On Fri, Oct 16, 2009 at 6:26 PM, AnotherNetFellow
<[email protected]> wrote:
> Thankyou Metin.
> Just a question: are you using http://code.google.com/p/couchdb-python/ ?
>
> (i'm referring to the "import couchdb" line)
>
> Thankyou!
>
> 2009/10/16 Metin Akat <[email protected]>
>
>> Hi,
>> Writing such an import script is really simple. I doubt it that there
>> can be "something ready", because it would have to be very flexible in
>> order to do some real work.
>>
>> See the example I am attaching to this mail.
>> I use such scripts constantly.
>> Pay a special attention at the "bulk insert" part, otherwise you will
>> have serious performance issues.
>> The csv module I am importing here is not a part of the standard
>> library so you will have to install python-csv (or whatever is it
>> called in your distro).
>> Also read that module's documentation in order to choose the right csv
>> dialect for your needs.
>>
>> By no means this is the "perfect" way of importing csv documents, but
>> it does the job for me, I hope you'll find it useful too.
>>
>>
>> On Fri, Oct 16, 2009 at 4:36 PM, AnotherNetFellow
>> <[email protected]> wrote:
>> > Hi,
>> > i'm testing CouchDB as an alternative to MySQL (using python rewriting my
>> > application data model doesn't seem so difficult).
>> >
>> > To have some bench i want to put in it something like 3 million entries
>> and
>> > see the get/put/delete latency. I have this data available in CSV format,
>> or
>> > in alternative to this i can import them in MySQL and then export
>> everything
>> > in SQL language.
>> >
>> > Do you know if there is a simple way to import everything on couch db?
>> >
>> > I think i can write a python script to read a csv file and put all
>> entries
>> > in couch, but hope something similar has already been written.
>> >
>> > Thankyou very much
>> >
>> > Giorgio
>> >
>> > --
>> > --
>> > AnotherNetFellow
>> > Email: [email protected]
>> >
>>
>
>
>
> --
> --
> AnotherNetFellow
> Email: [email protected]
>
import os
from hashlib import sha1
from datetime import datetime
from couchdb.schema import Document, View
from couchdb.schema import TextField, DateTimeField, ListField


class Human(Document):
    type = TextField(default='Human')
    display_name = TextField()
    email = TextField()
    password = TextField()
    created = DateTimeField(default=datetime.utcnow())
    last_login = DateTimeField(default=datetime.utcnow())
    
    groups = ListField(TextField())

    def _set_password(self, password):
        """Hash password on the fly."""
        hashed_password = password
        
        if isinstance(password, unicode):
            password_8bit = password.encode('UTF-8')
        else:
            password_8bit = password
            
        salt = sha1()
        salt.update(os.urandom(60))
        hash = sha1()
        hash.update(password_8bit + salt.hexdigest())
        hashed_password = salt.hexdigest() + hash.hexdigest()
            
        # Make sure the hased password is an UTF-8 object at the end of the
        # process because SQLAlchemy _wants_ a unicode object for Unicode
        # fields
        if not isinstance(hashed_password, unicode):
            hashed_password = hashed_password.decode('UTF-8')
            
            self.password = hashed_password
             
    def _get_password(self):
        """Return the password hashed"""
        return self.password
             
    def validate_password(self, password):
        """
        Check the password against existing credentials.
        
        :param password: the password that was provided by the user to
        try and authenticate. This is the clear text version that we will
        need to match against the hashed one in the database.
        :type password: unicode object.
        :return: Whether the password is valid.
        :rtype: bool
        
        """
        hashed_pass = sha1()
        hashed_pass.update(password + self.password[:40])
        return self.password[40:] == hashed_pass.hexdigest()

Reply via email to