在 peewee 中设置严格 sql 模式
Set strict sql mode in 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
class?或者在查询中注入原始 sql?
你最好的选择可能是继承 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
我想在我的 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
class?或者在查询中注入原始 sql?
你最好的选择可能是继承 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