Hi all,
In my program I'm using PGArray to store a list of strings in the
database (defined as text[] in the schema).
When I use Session.merge to create a copy of an object in the current
session, the list is converted to a single string (the first from the
list) in the copy. I've placed an example below. dont_load True or False
doesn't make a difference.
I've tested with SQLAlchemy 0.5.4 and 0.4.6.
Any idea what the problem might be and what I can do about it?
Thanks,
Roel van Os
Example code:
#!/usr/bin/env python
from sqlalchemy import *
from sqlalchemy.sql import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.databases.postgres import PGArray
Base = declarative_base()
class TestClass(Base):
__tablename__ = 'testclass'
id = Column(Integer, primary_key=True)
test_array = Column(PGArray(Text))
dburl = 'postgres://xxxx:x...@xxxx/xxxx'
engine = create_engine(dburl, convert_unicode=True, echo=False,
pool_recycle=60)
Session = sessionmaker(bind=engine)
Base.metadata.create_all(engine)
# Create a test object
s1 = Session()
o1 = TestClass(test_array=['1', '2', '3'])
s1.save(o1)
s1.commit()
o1_id = o1.id
s1.close()
# Load the test object
s2 = Session()
o2 = s2.query(TestClass).get(o1_id)
print o2.test_array
assert len(o2.test_array) == 3
# Merge the object into another session
s3 = Session()
o3 = s3.merge(o2, dont_load=True)
# Should print the same as above, but prints "1"
print o3.test_array
assert len(o3.test_array) == 3
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---