【发布时间】:2017-06-28 06:18:41
【问题描述】:
前提条件:数据库在我无法控制的地方运行,但我有连接数据库的授权帐户。
我需要确保通过我的应用程序连接到数据库运行的所有查询都应该是只读的。比如 DML 中的 SELECT。
使用正则表达式判断SQL查询? SQLAlchemy 或其他 Python 包中是否有可重用的函数/类?
任何建议都会有所帮助!谢谢!
【问题讨论】:
-
在 Postgresql
BEGIN READ ONLY. -
@iljaeverilä 谢谢!我明白了,围绕用户 SQL 做一些技巧。我为 MySQL 找到了
START TRANSACTION READ ONLY。谢谢! -
Np。使用正则表达式等解析查询并检查它是否包含 DML 等最终会失败的原因是,您可能会在 SELECT 中调用一个实际改变某些内容的过程。几乎没有办法抓住它。注意not all operations are transactional in MySQL,所以你可能会感到惊讶...
-
...和DDL in MySQL implicitly commits,或者换句话说,结束你的只读事务。
-
是的,我注意到了,谢谢你的提醒!我应该首先检查它是否只包含 DML。
标签: python mysql sql database postgresql