pandas.read_sql_query
如何验证传递给$ echo 1 > test.txt
$ python
>>> from pandas import read_sql_query
>>> from sqlalchemy import create_engine
>>> db = create_engine("sqlite:///:memory:")
>>> read_sql_query(".shell rm test.txt", db)
[Traceback omitted]
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near ".": syntax error [SQL: '.shell rm test.txt']
的SQL查询?例如,以下内容不起作用。
sqlite3
但是,如果我直接在test.txt
中运行相同的查询,那么它会正确运行并移除pandas.read_sql_query
。
这意味着SELECT s.name FROM student s WHERE s.subject in (1,2,3,4,5);
对它处理的SQL语句更严格,但我找不到强加的限制。我想验证允许用户将任意查询字符串传递给程序是否安全,并保证只有数据库会受到影响。