Я собрал проект, который может преобразовать некоторые действительно аккуратные выражения. Проверьте timestring .
pip install timestring
>>> import timestring
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm')
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm').date
datetime.datetime(2015, 8, 15, 20, 40)
>>> timestring.Range('next week')
>>> (timestring.Range('next week').start.date, timestring.Range('next week').end.date)
(datetime.datetime(2014, 3, 10, 0, 0), datetime.datetime(2014, 3, 14, 0, 0))
http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx
Поврежденное состояние соединения действительно должно быть закрыто и вновь открыто прежде имеющее право на длительное использование.
Править: К сожалению, закрытие закрытого соединения уклонится также. Необходимо будет протестировать ConnectionState прежде, чем действовать на неизвестное соединение. Возможно, короткий оператор переключения мог добиться цели.
Это непосредственно не отвечает на Ваш вопрос, но лучшая практика должна открыть и закрыть соединение для каждого доступа к базе данных. организация пула подключений ADO.NET гарантирует, что это работает хорошо. Особенно важно сделать это в приложениях для сервера (например, ASP.NET), но я сделал бы это даже в приложении WinForms, которое получает доступ к базе данных непосредственно.
Пример:
using(SqlConnection connection = new SqlConnection(...))
{
connection.Open();
// ... do your stuff here
} // Connection is disposed and closed here, even if an exception is thrown
Таким образом Вы никогда не должны проверять состояние соединения при открытии соединения.