我想在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?
答案 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