I'm having trouble getting updates from InnoDB table. I have a test case with two programs. One simply creates a session and does a periodic query. The other writes two values, one into a MyISAM table and one into an InnoDB table. The next query from the first program doesn't get the updated contents inserted from the second program. Here is the test case code:
---------------------------------- First the reader program: #!/usr/bin/python2.5 import time import sqlalchemy print sqlalchemy.__version__ # 0.4.8 from sqlalchemy import create_engine engine = create_engine('mysql://localhost/test_db', echo=True) from sqlalchemy import Table, Column, String, MetaData metadata = MetaData() myisam_table = Table('myisam_table', metadata, Column('my_string', String(40), primary_key=True), mysql_engine='MyISAM' ) innodb_table = Table('innodb_table', metadata, Column('my_string', String(40), primary_key=True), mysql_engine='InnoDB' ) metadata.create_all(engine) class MyisamTableRow(object): def __init__(self, my_string): self.my_string = my_string def __repr__(self): return "<MyisamTableRow('%s')>" % self.my_string class InnodbTableRow(object): def __init__(self, my_string): self.my_string = my_string def __repr__(self): return "<InnodbTableRow('%s')>" % self.my_string from sqlalchemy.orm import mapper mapper(MyisamTableRow, myisam_table) mapper(InnodbTableRow, innodb_table) from sqlalchemy.orm import sessionmaker Session = sessionmaker() session = Session(bind=engine, autoflush=False, transactional=True) while (True): time.sleep(10) print session.query(MyisamTableRow).all() print session.query(InnodbTableRow).all() ---------------------------------- The writer is essentially the same, with the while loop replaced with: m = MyisamTableRow('a test string') session.save(m) session.commit() i = InnodbTableRow('a test string') session.save(i) session.commit() ------------------------------------ While the reader is running, I execute the writer: 2009-06-01 06:24:51,295 INFO sqlalchemy.engine.base.Engine.0x..50 BEGIN 2009-06-01 06:24:51,296 INFO sqlalchemy.engine.base.Engine.0x..50 INSERT INTO myisam_table (my_string) VALUES (%s) 2009-06-01 06:24:51,297 INFO sqlalchemy.engine.base.Engine.0x..50 ['a test string'] 2009-06-01 06:24:51,298 INFO sqlalchemy.engine.base.Engine.0x..50 COMMIT 2009-06-01 06:24:51,300 INFO sqlalchemy.engine.base.Engine.0x..50 BEGIN 2009-06-01 06:24:51,301 INFO sqlalchemy.engine.base.Engine.0x..50 INSERT INTO innodb_table (my_string) VALUES (%s) 2009-06-01 06:24:51,301 INFO sqlalchemy.engine.base.Engine.0x..50 ['a test string'] 2009-06-01 06:24:51,302 INFO sqlalchemy.engine.base.Engine.0x..50 COMMIT ------------------------------------ The next iteration of the reader querying, shows the MyISAM table contents, but the InnoDB contents haven't updated: 2009-06-01 06:24:56,515 INFO sqlalchemy.engine.base.Engine.0x..50 SELECT myisam_table.my_string AS myisam_table_my_string FROM myisam_table ORDER BY myisam_table.my_string 2009-06-01 06:24:56,516 INFO sqlalchemy.engine.base.Engine.0x..50 [] [<MyisamTableRow('a test string')>] 2009-06-01 06:24:56,523 INFO sqlalchemy.engine.base.Engine.0x..50 SELECT innodb_table.my_string AS innodb_table_my_string FROM innodb_table ORDER BY innodb_table.my_string 2009-06-01 06:24:56,523 INFO sqlalchemy.engine.base.Engine.0x..50 [] [] I am not sure what difference I have that is making the InnoDB table not update properly between processes. Any help/suggestions would be appreciated. I have not had luck finding previous issues like this on Google. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---