У Вас может также быть свой возврат запроса время как метка времени Unix. Это избавилось бы от потребности назвать strtotime()
и сделать вещи немного менее интенсивными на стороне PHP...
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
Тогда в PHP просто используют эти date()
функция для форматирования его, какой бы ни путь Вы хотели бы.
unixtime);
?>
или
unixtime);
?>
мне нравится этот подход в противоположность использованию функция MySQL DATE_FORMAT
, потому что это позволяет Вам снова использовать тот же запрос для захвата данных и позволяет Вам изменять форматирование в PHP.
Это является раздражающим для имения двух различных запросов только для изменения способа, которым дата смотрит в UI.
Вы можете использовать модуль трассировки вместе с sys.exc_info ()
, чтобы получить обратную трассировку программным способом:
try:
myapp.foo.doSomething()
except Exception, e:
exc_type, exc_value, exc_tb = sys.exc_info()
filename, line_num, func_name, text = traceback.extract_tb(exc_tb)[-1]
print 'Thrown from: %s' % filename
Это должно сработать:
import inspect
try:
some_bad_code()
except Exception, e:
frm = inspect.trace()[-1]
mod = inspect.getmodule(frm[0])
print 'Thrown from', mod.__name__
РЕДАКТИРОВАТЬ: Stephan202 упоминает угловой случай . В этом случае, я думаю, мы могли бы использовать имя файла по умолчанию.
import inspect
try:
import bad_module
except Exception, e:
frm = inspect.trace()[-1]
mod = inspect.getmodule(frm[0])
modname = mod.__name__ if mod else frm[1]
print 'Thrown from', modname
Проблема в том, что если модуль не загружается (из-за того, что при чтении кода в этом файле возникло исключение), то проверяет Вызов .getmodule
не возвращает None. Итак, мы просто используем имя файла, на который ссылается фрейм-нарушитель. (Спасибо за указание на это, Stephan202!)
Пакет протоколирования Python уже поддерживает это - проверьте документацию . Вам просто нужно указать % (module) s
в строке формата. Тем не менее, это дает вам модуль, в котором исключение было перехвачено - не обязательно то же самое, что было сгенерировано . Отслеживание, конечно же, дает вам точное место, где возникло исключение.
Это должно помочь:
import inspect
def modname():
t=inspect.trace()
if t:
return t[-1][1]
У меня есть история о том, как CrashKit вычисляет имена классов и имена пакетов из трассировки стека Python в блоге компании: « Сага трассировки стека Python ». Включен рабочий код.