在peewee中设置严格的sql模式

时间:2015-03-03 18:48:28

标签: python mysql peewee

我想在mySQL数据库中强制使用ENUM约束。要做到这一点,建议我使用" strict" sql模式。在交互式提示中,可以使用以下方法之一设置:

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 个答案:

答案 0 :(得分: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