我正在尝试对输入的SQL字符串进行一些基本验证。我想确保查询的第一个单词是否则将SELECT
引发错误。这里有些例子:
1) yes
SELECT * FROM table
2) no
# SELECT * FROM table;
DROP TABLE table;
3) no
/* SELECT * FROM
TABLE */ DROP TABLE table;
4) yes
# here is a comment
SELECT * FROM table
5) yes
/* here is a
comment */ SELECT * FROM table
和其他各种。也许这更多是一个正则表达式解决方案或string.replace。但是,查看是否已输入SQL SELECT语句的一种好方法是什么?
我将为作业使用适当的工具sqlparse
-SQL解析器,获取第一个语句对象,并检查其SELECT
类型是否正确:
In [1]: import sqlparse
In [2]: queries = [
...: "SELECT * FROM table",
...: """
...: # SELECT * FROM table;
...: DROP TABLE table;
...: """,
...: """/* SELECT * FROM
...: TABLE /* DROP table table;""",
...: """
...: # here is a comment
...: SELECT * FROM table
...: """
...: ]
In [3]: def is_select(query):
first_statement = next((token for token in sqlparse.parse(query) if isinstance(token, sqlparse.sql.Statement)), None)
if first_statement:
return first_statement.get_type() == 'SELECT'
In [4]: for query in queries:
...: print(query, is_select(query))
SELECT * FROM table
True
# SELECT * FROM table;
DROP TABLE table;
False
/* SELECT * FROM
TABLE /* DROP table table;
False
# here is a comment
SELECT * FROM table
True
在SQL中,语句用于从数据库中的表中查询或检索数据。 返回存储在表中的数据,返回的结果称为结果集。 语法 这里,表达式是要从中选择数据的表的字段名称。使用以下语法选择表中可用的所有字段: 假设表有以下行记录 - EMP_ID EMP_NAME CITY PHONE_NO SALARY 1 Kristen Chicago 9737287378 150000 2 Russell Austin 9262
SELECT 语句用于从数据库中选取数据。 SQL SELECT 语句 SELECT 语句用于从数据库中选取数据。 结果被存储在一个结果表中,称为结果集。 SQL SELECT 语法SELECT column_name,column_name FROM table_name; 与SELECT * FROM table_name; 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面
在 T-SQL 中,SELECT 语句用于从数据库表中获取数据,并以结果的形式返回数据。这些表在 SELECT STATEMENT 中称为结果集。 Select语句的语法: 其中 column1、column2、column N 是要获取其值的表的字段。如果获取该表中所有可用的字段,那么需要使用给定的语法—— 例子: 考虑具有以下记录的 CUSTOMERS 表- 以下命令是一个示例,它将获取 CU
通过 SQL,您可以从一个表复制信息到另一个表。 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 SQL SELECT INTO 语句 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。 当然你可以使用以下语句来拷贝表结构
SELECT DISTINCT 语句用于返回唯一不同的值。 SQL SELECT DISTINCT 语句 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。 DISTINCT 关键词用于返回唯一不同的值。 SQL SELECT DISTINCT 语法SELECT DISTINCT column_name,column_name FROM table_name;
是否可以在 SQL SERVER 中的事务中使用 SELECT 语句锁定行?我想锁定该行,以便外部的其他事务无法访问该行。 提交或回滚事务后,应释放该行。这就是我的意思。。。 有人有建议吗?我应该执行 UPDATE 语句来锁定该行吗? 请不要将此问题标记为重复问题。因为,我不是在问UPDATE语句,而是在问SELECT 编辑:我试图“设置事务隔离级别串行化”,但这锁定了太多东西。我的SP很大,它有