[Twisted-Python] Enterprise Rowobject and generating primary keys

Clark C. Evans cce at clarkevans.com
Thu May 27 20:03:59 EDT 2004


as I remember, nextval is garuenteed to be unique (but 
definately not sequential) across transactions.  Why not
just fetch your own value and use it as the key?

def mykey()
   c = pgsql.cursor()
   c.execute("SELECT nextval('myseqence')")
   return c.fetchone()[0]

or is your question more subtle?

*bings*

Clark

On Thu, May 27, 2004 at 11:25:39PM +0200, Guenther Starnberger wrote:
| Hi all,
| 
| I have a problem creating primary key values for enterprise rowobjects.
| 
| The KeyFactory class says "This is deprecated. Use the underlying
| database to generate keys, or just roll your own.". As I am using
| Postgresql the ideal solution would be to just use the 'nextval'
| function (which is used as default value for the primary key in my
| schema, therefore I could skip this column in my insert statement).
| 
| The problem now is, that I need to assign a value to the rowobject
| primary key column, otherwise i get an exception from twisted
| ('instance has no attribute...'). Just excluding the primary key
| column from my rowColumns attribute doesn't work either as this
| results in twisted to hang. Manually selecting the nextval function
| with the adbapi and using the result as primary key works, but this
| solution isn't really nice.
| 
| Any other proposals for an elegant solution to create primary keys
| when inserting new rowobjects?
| 
| cu
| /gst
| 
| _______________________________________________
| Twisted-Python mailing list
| Twisted-Python at twistedmatrix.com
| http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
| 

-- 
Clark C. Evans                     Prometheus Research, LLC
Chief Technology Officer           Turning Data Into Knowledge
cce at prometheusresearch.com         www.prometheusresearch.com
(main) 203.777.2550                (cell) 203.444.0557




More information about the Twisted-Python mailing list