Hi Michael,

Can you paste the following code into your editor and try it out? Can
you tell me what I would need to do to close the connections in this
case?

Any help would be greatly appreciated ;-)

from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import mapper
from sqlalchemy.pool import StaticPool
import os

class Message(object):
      pass

if __name__ == '__main__':
      db_conn = 'sqlite:///foo.db'
      db = create_engine(db_conn,echo=False, poolclass=StaticPool)
      metadata = MetaData(db)
      queueName = 'foo'
      queue = Table(queueName, metadata,
                    Column('IDX', Integer, primary_key=True,
autoincrement = True ),
                    Column('ID', String(64)),
                    Column('CORRELATIONID', String(64)),)
      queue.create()
      session_maker = sessionmaker(bind=db)
      session = session_maker()
      mapper(Message, queue)

      msg = Message()
      msg.ID = '1234'
      msg.CORRELATIONID = '111'
      session.add(msg)
      session.commit()

      print "Message count: " + str(session.query(Message).count())

      db.dispose()
      os.remove('foo.db')
      print "Done..."

Thanks

Lynton





On Mar 8, 4:41 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote:
> Lynton Grice wrote:
> > Hi there,
>
> > I am using SQLAlchemy to build a custom based queue implementation.
>
> > As part of the methods exposed I have a "deletequeue" that is meant to
> > physically delete the SQLite database from the file system.
>
> > But whenever I try delete it I get the following error:
>
> > WindowsError: (32, 'The process cannot access the file because it is
> > being used by another process'
>
> > I have tried calling the DISPOSE method of the ENGINE object from
> > SQLAlchemy but there is still some file handle holding on...
>
> > All I have done is create the database (.db file), and now I want to
> > delete it but no luck ;-(
>
> > Any ideas how I can close any "handles" referencing that ".db" file
> > for that SQLite database?
>
> here is a test that passes for me, however even if I don't close the
> connection or dispose the engine the file still allows deletion.   Your
> first step is to ensure this program works on your platform.
>
> from sqlalchemy import *
>
> engine = create_engine("sqlite:///foo.db")
>
> conn = engine.connect()
> conn.execute("create table foo (bar string)")
> conn.execute("insert into foo values('test')")
> conn.close()
> engine.dispose()
>
> import os
> os.remove('foo.db')
>
>
>
> > Thanks for the help
>
> > Lynton
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sqlalchemy" group.
> > To post to this group, send email to sqlalch...@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.- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@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