2015-03-03 2 views
0

Я хотел бы заставить ограничения ENUM в моей базе данных mySQL. Для этого предлагается использовать «строгий» режим sql. В интерактивном режиме, это может быть установлен с одним из:Установить строгий режим sql в peewee

SET GLOBAL sql_mode = 'STRICT_ALL_TABLES'; 
SET SESSION sql_mode = 'STRICT_ALL_TABLES'; 

Или при запуске сервера с:

--sql-mode="STRICT_ALL_TABLES" 

Или my.cnf как:

sql-mode="STRICT_ALL_TABLES" 

Есть ли способ делать такую ​​вещь в peewee? Возможно, расширив класс Database? Или вводить сырые sql в запросах?

ответ

1

Ваш лучший выбор - вероятно, подкласс MySQLDatabase и переопределить метод _connect(), например.

class StrictMySQLDatabase(MySQLDatabase): 
    def _connect(self, database, **kwargs): 
     conn = super(StrictMySQLDatabase, self)._connect(database, **kwargs) 
     cursor = conn.cursor() 
     cursor.execute("SET SESSION sql_mode = 'STRICT_ALL_TABLES';") 
     return conn