I am getting an error connecting to Postgresql:
ImportError: unknown database 'psycopg'

The back story is that I am attempting to modify an example given in
Martin Aspeli's Book: Professional Plone Development (Chapter 12 -
page 274->.  He recommends using SQLAlchemy, and it looks very cool,
kind of similar to a SQLBuilder class I put together a few years ago,
but more advanced.

I don't know really what to provide as I am completely new to
SQLAlchemy, but the most relevent thing that I can see is the class
that extends collective.lead.Database and the properties class:

from persistent import Persistent

from zope.interface import implements
from zope.component import getUtility

from collective.lead import Database
from mls.agent.interfaces import IDatabaseSettings

from sqlalchemy.engine.url import URL
from sqlalchemy import Table, mapper, relation

from mls.agent.person import Person
from mls.agent.office import Office

class MLSDatabaseSettings(Persistent):
   """Database connection settings

   We use raw fields here so that we can more easily use a
zope.formlib
   form in the control panel to configure it. This is registered as a
   persistent local utility, with name 'optilux.reservations', which
is
   then used by collective.lead.interfaces.IDatabase to find
connection settings.
   """

   implements(IDatabaseSettings)

   drivername = 'psycopg'
   hostname = 'localhost'
   port = 5432
   username = 'postgres'
   password = 'postgres'
   database = 'trend-dev'

class MLSDatabase(Database):
   """The reservations database - registered as a utility providing
   collective.lead.interfaces.IDatabase and named
'optilux.reservations'
   """

   @property
   def _url(self):
      settings = getUtility(IDatabaseSettings)
      return URL(drivername=settings.drivername,
username=settings.username,
               password=settings.password, host=settings.hostname,
               port=settings.port, database=settings.database)

   def _setup_tables(self, metadata, tables):
      """Map the database structure to SQLAlchemy Table objects
      """

      tables['person'] = Table('person', metadata, autoload=True)
      tables['office'] = Table('office', metadata, autoload=True)

   def _setup_mappers(self, tables, mappers):
      """Map the database Tables to SQLAlchemy Mapper objects
      """

      mappers['person'] = mapper(Person, tables['person'],
         properties = {'office' : relation(Office),});

      mappers['office'] = mapper(Office, tables['office'])


Also the test case that I am running:

    >>> self.loginAsPortalOwner()

    >>> from zope.component import getUtility
    >>> from mls.agent.interfaces import IDatabaseSettings

    >>> settings = getUtility(IDatabaseSettings)

    >>> settings.drivername = 'psycopg'
    >>> settings.username = 'postgres'
    >>> settings.password = 'postgres'
    >>> settings.hostname = 'localhost'
    >>> settings.database = 'trend-dev'

    >>> from collective.lead.interfaces import IDatabase
    >>> db=getUtility(IDatabase, name='db.mls')

    >>> from mls.agent.interfaces import IPersonLocator
    >>> locator = getUtility(IPersonLocator)
    >>> locator.persons_for_mls_person_code(<data>).last_name;
    <answer>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to