Michael Bayer wrote:
>> I need to do smth like this in a mapper() call for table 'hosts':
>>
>> 'Earliest_reservation':relation(Reservation, order_by=Reservation.id,
>> backref='hosts'),
>> 'Reservations':relation(Reservation,
>> secondary=reservation_hosts_assoc_table, backref='hosts')
>>
>> That is, I need to create "links" between tables 'hosts' and
>> 'reservation': one is normal ForeignKey of reservation.id in hosts
>> table, and another is via association table  
>> (reservation_hosts_assoc_table).
> 
> whats the actual question ?   the above setup should be fine.

Sorry, I did not include the exception:

Traceback (most recent call last):
   File "./converter.py", line 378, in ?
     convertprojecthwrepsfile('projecthwreps.csv', fsep)
   File "./converter.py", line 294, in convertprojecthwrepsfile
     em = Email(e)
   File "<string>", line 4, in __init__
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/attributes.py",
 
line 891, in initialize_instance
     fn(self, instance, args, kwargs)
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/mapper.py",
 
line 1744, in _event_on_init
     instrumenting_mapper.compile()
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/mapper.py",
 
line 662, in compile
     mapper._post_configure_properties()
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/mapper.py",
 
line 691, in _post_configure_properties
     prop.init()
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/interfaces.py",
 
line 408, in init
     self.do_init()
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/properties.py",
 
line 713, in do_init
     self._post_init()
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/properties.py",
 
line 995, in _post_init
     self.backref.compile(self)
   File 
"/usr/lib/python2.4/site-packages/SQLAlchemy-0.5.2-py2.4.egg/sqlalchemy/orm/properties.py",
 
line 1149, in compile
     raise sa_exc.ArgumentError("Error creating backref '%s' on relation 
'%s': "
sqlalchemy.exc.ArgumentError: Error creating backref 'hosts' on relation 
'Host.Reservations': property of that name exists on mapper 
'Mapper|Reservation|reservation'


Entire code:
##############################################################

import codecs
from sqlalchemy import create_engine, Table, Column, String, Integer, 
MetaData, ForeignKey, desc, asc
from sqlalchemy.orm import mapper, relation, sessionmaker, 
clear_mappers, join
from sqlalchemy.databases.sqlite import SLBoolean, SLDate
import sqlalchemy
import sqlalchemy.exc
import logging
import os
import ConfigParser

globalpath = os.path.dirname(__file__)

conf = ConfigParser.SafeConfigParser()
conf.read(globalpath + os.sep + 'status.conf')
postgresdbname=conf.get('main','postgresdbname')
postgreshost=conf.get('main','postgreshost')
postgresuser=conf.get('main', 'postgresuser')
postgrespassword=conf.get('main','postgrespassword')
postgresport=conf.get('main','postgresport')

class Host(object):
     def 
__init__(self,IP,HostName,Location,Additional_info,Column_11,Column_12,Username,Password,Alias,Shareable,Shareable_between_projects,Notes,CPU,RAM,Column_23,Batch,ASSET,Owner,SSH_KEY_PRESENT,Machine_Type_Model,MAC_ADDRESS_ETH_0,Physical_Box,Up_n_running,Available):
         self.IP = IP
         self.HostName = HostName
         self.Location = Location
         self.Additional_info = Additional_info
         #self.End_Date = End_Date
         self.Column_11 = Column_11
         self.Column_12 = Column_12
         self.Username = Username
         self.Password = Password
         self.Alias = Alias
         self.Shareable = Shareable
         self.Shareable_between_projects = Shareable_between_projects
         self.Notes = Notes
         self.CPU = CPU
         self.RAM = RAM
         self.Batch = Batch
         self.ASSET = ASSET
         self.Owner = Owner
         self.SSH_KEY_PRESENT = SSH_KEY_PRESENT
         self.Machine_Type_Model = Machine_Type_Model
         self.MAC_ADDRESS_ETH_0 = MAC_ADDRESS_ETH_0
         self.Physical_Box = Physical_Box
         self.Up_n_running = Up_n_running
         self.Available = Available

class Architecture(object):
     def __init__(self,Architecture):
         self.Architecture = Architecture

class OS_Kind(object):
     def __init__(self,os_kind):
         self.OS_Kind = os_kind

class OS_version(object):
     def __init__(self,os_version):
         self.OS_version = os_version

class Email(object):
     def __init__(self,email):
         self.Email = email

class Virtualization(object):
     def __init__(self,virtualization, color):
         self.Virtualization = virtualization
         self.color = color

class Project(object):
     def __init__(self, project):
         self.Project = project

class HWRep(object):
     def __init__(self, hwrepname):
         self.HWRep = hwrepname

class Reservation(object):
     def __init__(self, startdate, enddate, status, businessneed, 
notetohwrep):
         self.Start_Date = startdate
         self.End_Date = enddate
         self.Status = status
         self.Businessneed = businessneed
         self.Notetohwrep = notetohwrep



eng = create_engine('sqlite:////' + globalpath + os.sep + 
'hosts.db',echo=True)
#eng = create_engine('postgres://%s:%...@%s:%s/%s' % (postgresuser, 
postgrespassword, postgreshost, postgresport, postgresdbname), echo=True)

md = MetaData()
md.bind = eng
#clear_mappers()

#    for col in columnlist:
#        hosts_table = hosts_table + "Column('%s',String)," % col
#    hosts_table = hosts_table.rstrip(',') + ')'
#    exec(hosts_table)


architecture_table = Table('architecture',md,
Column('id',Integer,primary_key=True),
Column('Architecture',String))


os_kind_table = Table('os_kind',md,
Column('id',Integer,primary_key=True),
Column('OS_Kind',String))


os_version_table = Table('os_version',md,
Column('id',Integer,primary_key=True),
Column('OS_version',String))


email_table = Table('email',md,
Column('id',Integer,primary_key=True),
Column('Email',String))


virtualization_table = Table('virtualization',md,
Column('id',Integer,primary_key=True),
Column('Virtualization',String),
Column('color',String))

project_table = Table('project',md,
Column('id',Integer,primary_key=True),
Column('Project',String))

hwrep_table = Table('hwrep',md,
Column('id',Integer,primary_key=True),
Column('HWRep',String),
Column('Email_id',Integer,ForeignKey('email.id')),
Column('Password',String))

# project <-> hwrep many-to-many association table
project_hwreps_assoc_table = Table('project_hwreps', md,
Column('Project_id',Integer,ForeignKey('project.id')),
Column('HWRep_id',Integer,ForeignKey('hwrep.id')))



tablelocks_table = Table('tablelocks', md,
Column('tablename', String, primary_key=True))




####

hosts_table = Table('hosts',md,
Column('id',Integer,primary_key=True),
Column('IP',String),
Column('HostName',String),
Column('Location',String),
Column('Architecture_id',Integer,ForeignKey('architecture.id')),
Column('OS_Kind_id',Integer,ForeignKey('os_kind.id')),
Column('OS_version_id',Integer,ForeignKey('os_version.id')),
Column('Additional_info',String),
#Column('End_Date',SLDate),
Column('Column_12',String),
Column('Column_13',String),
Column('Email_id',Integer,ForeignKey('email.id')),
Column('Username',String),
Column('Password',String),
Column('Alias',String),
Column('Virtualization_id',Integer,ForeignKey('virtualization.id')),
Column('Shareable',SLBoolean),
Column('Shareable_between_projects',String),
Column('Notes',String),
Column('CPU',String),
Column('RAM',String),
Column('Column_24',String),
Column('Batch',String),
Column('ASSET',String),
Column('Owner',String),
Column('SSH_KEY_PRESENT',String),
Column('Machine_Type_Model',String),
Column('MAC_ADDRESS_ETH_0',String),
Column('Physical_Box',SLBoolean),
Column('Up_n_running',SLBoolean),
Column('Available',SLBoolean),
Column('Earliest_reservation_id',Integer,ForeignKey('reservation.id')),
Column('Project_id',Integer,ForeignKey('project.id')))

reservation_table = Table('reservation', md,
Column('id',Integer,primary_key=True),
Column('Start_Date',SLDate),
Column('End_Date',SLDate),
Column('Status', String),
Column('Businessneed', String),
Column('Notetohwrep',String),
Column('Email_id',Integer,ForeignKey('email.id')),
Column('Project_id',Integer,ForeignKey('project.id'))
)

reservation_hosts_assoc_table = Table('reservation_hosts', md,
Column('Reservation_id',Integer,ForeignKey('reservation.id')),
Column('Host_id',Integer,ForeignKey('hosts.id'))
)

mapper(Virtualization, virtualization_table)
mapper(Email,email_table)
mapper(OS_version, os_version_table)
mapper(Architecture, architecture_table)
mapper(OS_Kind, os_kind_table)

mapper(Project, project_table, properties={'HWReps':relation(HWRep, 
secondary=project_hwreps_assoc_table, backref='project')})
mapper(HWRep, hwrep_table, properties={'Projects':relation(Project, 
secondary=project_hwreps_assoc_table, backref='hwrep'), 
'Email':relation(Email, order_by=Email.id, backref='hwrep')})


mapper(Reservation, reservation_table,
properties={'Email':relation(Email,order_by=Email.id,backref='reservation'),
'Project':relation(Project, order_by=Project.id, backref='reservation'),
'Hosts':relation(Host, secondary=reservation_hosts_assoc_table,
backref='reservation')})

mapper(Host, hosts_table,
properties={'Architecture':relation(Architecture,
order_by=Architecture.id, backref='hosts'),
'OS_Kind':relation(OS_Kind, order_by=OS_Kind.id, backref='hosts'),
'OS_version':relation(OS_version, order_by=OS_version.id,
backref='hosts'), 'Email':relation(Email, order_by=Email.id,
backref='hosts'), 'Virtualization':relation(Virtualization,
order_by=Virtualization.id, backref='hosts'),
'Project':relation(Project, order_by=Project.id, backref='hosts'),
'Earliest_reservation':relation(Reservation, order_by=Reservation.id,
backref='hosts'),
'Reservations':relation(Reservation,
secondary=reservation_hosts_assoc_table, backref='hosts')
})
####



Session=sessionmaker(bind=eng)
session=Session()

logging.basicConfig(filename=globalpath + os.sep + 'sql.log')
logging.getLogger('sqlalchemy.engine').setLevel(logging.DEBUG)
logging.getLogger('sqlalchemy.orm.unitofwork').setLevel(logging.DEBUG)

#######################################################


Regards,
mk

--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to