Как недавно , предложенный в списке рассылки python-dev , модуль runpy может оказаться жизнеспособной альтернативой. Цитата из этого сообщения:
https://docs.python.org/3/library/runpy.html#runpy.run_path
import runpy file_globals = runpy.run_path("file.py")
Есть тонкие отличия от
execfile
:
run_path
всегда создает новое пространство имен. Он выполняет код как модуль, поэтому нет никакой разницы между глобальными и локальными (поэтому есть только аргументinit_globals
). Возвращаются глобальные переменные.execfile
, выполняемые в текущем пространстве имен или в указанном пространстве имен. Семантикаlocals
иglobals
, если они были заданы, были схожи с локалями и глобалами внутри определения класса.run_path
может не только выполнять файлы, но также яйца и каталоги (см. документация для деталей).
Имела ту же проблему, но с именем табуляции под названием Transaction
. Если вы установите
hibernate.globally_quoted_identifiers=true
, тогда будут указаны все идентификаторы базы данных.
Найден мой ответ здесь Специальный символ в имени таблицы hibernate, дающий ошибку
И нашел все доступные настройки здесь https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/appendices/Configurations.html
Could не найти лучшие документы для этого, хотя.
Если вы используете, как показано ниже, он должен работать
@Column(name="[order]")
private int order;
Нет - изменить имя столбца.
Это зависит от базы данных, и вы просто не можете создать такой столбец. В конце концов hibernate отправляет DDL в базу данных. Если вы не можете создать действительный DDL с этим именем столбца, это означает, что спящий режим также не может быть. Я не думаю, что цитирование решит проблему, даже если вы пишете DDL.
Даже если вам удастся избежать имени - измените его. Он будет работать с этой базой данных, но не будет работать с другим.
С Hibernate в качестве поставщика JPA 1.0 вы можете избежать зарезервированного ключевого слова, заключая его в обратные ссылки:
@Column(name="`open`")
Это синтаксис, унаследованный от Hiberate Core:
5,4. Идентификаторы с кодами SQL
Вы можете заставить Hibernate указывать идентификатор в сгенерированном SQL, включив имя таблицы или столбца в обратные ссылки в документе сопоставления. Hibernate будет использовать правильный стиль цитаты для SQL Dialect. Обычно это двойные кавычки, но SQL Server использует скобки, а MySQL использует обратные ссылки.
blockquote><class name="LineItem" table="`Line Item`"> <id name="id" column="`Item Id`"/><generator class="assigned"/></id> <property name="itemNumber" column="`Item #`"/> ... </class>
В JPA 2.0 синтаксис стандартизован и становится:
@Column(name="\"open\"")
Ссылки
- Справочное руководство по гибернату 5.4. SQL-котируемые идентификаторы
- Спецификация JPA 2.0 2.13 Именование объектов базы данных
Связанные вопросы
Некоторые реализации JPA (например, тот, который я использую, DataNucleus) автоматически цитируют идентификатор для вас, поэтому вы никогда не получите этого.
@Column(name="\"open\"")
Это сработает наверняка, такая же проблема произошла со мной, когда я учил спящий режим.