2013-03-31 4 views
0

Возможно ли вручную закрыть соединение SQLObject после его открытия? Я пытаюсь удалить файл базы данных после его использования, но кажется, что открытое соединение с файлом базы данных останавливает меня от этого.Закрытие соединения SQLObject

Например:

from sqlobject import * 
import os 

# Create and open connection to a database file. 
sqlhub.processConnection = connectionForURI('sqlite:path_to_db') 
SomeObject.createTable() 

# ... 

# Delete database when finished. 
os.remove('path_to_db') 

дает следующее сообщение об ошибке:

WindowsError: [Error 32] The process cannot access the file because 
       it is being used by another process: 'path_to_db' 

ответ

3

Похоже, просто звоню .close() на соединение с базой данных, кажется, сделать трюк:

from sqlobject import * 
import os 

# Create and open connection to a database file. 
sqlhub.processConnection = connectionForURI('sqlite:path_to_db') 

#do something with connection 
pass 

#close connection 
sqlhub.processConnection.close() 

#delete database 
os.remove(path_to_db) 

I мог найти только немного по методу closehere, но, честно говоря, вы можете относиться к нему как к любому другому объекту file. У меня нет большого опыта работы с sqlobject, хотя, и в интерпретаторе вы все равно можете удалить db сразу после назначения processConnection, не закрывая его, поэтому кто знает.

+0

Это, кажется, отлично работает для моих целей, поэтому я могу справиться с небольшой двусмысленностью в реализации библиотеки на данный момент. Большое спасибо за это. – JimmidyJoo

+0

@JimmidyJoo Счастливые помочь! – TankorSmash

Смежные вопросы