Python 使用peewee授予权限的推荐方法是什么?

Python 使用peewee授予权限的推荐方法是什么?,python,orm,peewee,Python,Orm,Peewee,据我从文档中了解,peewee可以从给定模型创建表,例如: database = SqliteDatabase(DATABASE) class BaseModel(Model): class Meta: database = database class User(BaseModel): username = CharField(unique=True) database.connect() database.create_table(User, safe=

据我从文档中了解,peewee可以从给定模型创建表,例如:

database = SqliteDatabase(DATABASE)

class BaseModel(Model):
    class Meta:
        database = database

class User(BaseModel):
    username = CharField(unique=True)

database.connect()
database.create_table(User, safe=True)
但我还没有找到一种建议的方法来更改权限或授予对表的访问权。我知道我可以像这样简单地执行原始SQL:

database.execute_sql('GRANT ALL ON TABLE user TO ro_user;')

但我想知道,是否有更好/正确的方法来做到这一点?

不,这是一个很好的方法。Peewee不“本机”支持创建
GRANT
语句。事实上,我使用过的ORM中没有一个是这样的——甚至是SQLAlchemy,它是非常有特点的原始SQL方式。部分原因是不同数据库之间的权限处理和
GRANT
语法差异很大

因此,您可以使用Peewee的
数据库.execute\u sql()

要记住的一件事是,如果您想动态指定用户名,并且用户名来自用户输入或不完全可信的源,您需要正确地转义它(在PostgreSQL中,双引号),或者确保
username.isidentifier()
为True或其他内容:

if not username.isidentifier():
    raise ValueError('bad username: {}'.format(username))
database.execute_sql('GRANT ALL ON TABLE user TO {};'.format(username))