sql >> Database teknologi >  >> RDS >> Oracle

Python-parsing af en SQL ved hjælp af pyparsing

Denne parser blev skrevet for lang tid siden, og håndtering af flere værdier i et resultatnavn kom først senere.

Skift denne linje i den parser, du citerede:

single_source = ( (Group(database_name("database") + "." + table_name("table")) | table_name("table")) + 

til

single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) + 

Når jeg kører din eksempelsætning gennem select_stmt-parseren, får jeg nu dette:

select * from xyz  inner join dhf  on df = hfj  where z > 100
['SELECT', ['*'], 'FROM', 'xyz', 'INNER', 'JOIN', 'dhf', 'ON', ['df', '=', 'hfj'], 'WHERE', ['z', '>', '100']]
- columns: ['*']
- table: [['xyz'], ['dhf']]
  [0]:
    ['xyz']
  [1]:
    ['dhf']
- where_expr: ['z', '>', '100']


  1. Underforespørgsel returnerer mere end 1 række - MySQL

  2. Sådan forbedres forespørgselsydeevne i Django admin-søgning på relaterede felter (MySQL)

  3. 4 Fantastiske SQL Server-overvågningsressourcer til databaseadministratorer

  4. Algoritme til at undgå SQL-injektion på MSSQL Server fra C#-kode?