Ich möchte eine SQL-Schnittstelle auf einem nicht relationalen Datenspeicher erstellen. Nicht relationaler Datenspeicher, aber es ist sinnvoll, relational auf die Daten zuzugreifen.SQL mit Python analysieren
Ich untersuche mit ANTLR einen AST, der die SQL als eine relationale Algebra Ausdruck darstellt. Dann geben Sie Daten zurück, indem Sie den Baum auswerten/gehen.
Ich habe noch nie einen Parser implementiert, und deshalb möchte ich einen Ratschlag, wie Sie am besten einen SQL-Parser und Evaluator implementieren.
- Klingt der oben beschriebene Ansatz richtig?
- Gibt es andere Tools/Bibliotheken, die ich untersuchen sollte? Wie PLY oder Pyparsing.
- Zeiger auf Artikel, Bücher oder Quellcode, die mir helfen wird geschätzt.
Update:
implementiert ich einen einfachen SQL-Parser pyparsing verwenden. In Kombination mit Python-Code, der die relationalen Operationen für meinen Datenspeicher implementiert, war dies ziemlich einfach.
Wie ich in einem der Kommentare gesagt habe, war der Zweck der Übung, die Daten für die Berichts-Engines verfügbar zu machen. Um dies zu tun, muss ich wahrscheinlich einen ODBC-Treiber implementieren. Das ist wahrscheinlich eine Menge Arbeit.
Warum SQL-Beschränkungen für Objekte auferlegen? Was ist zu gewinnen? Was ist falsch mit OQL? http://en.wikipedia.org/wiki/Object_Query_Language –
Zu gewinnen: Eine Abfrage-Schnittstelle, die eine große Anzahl von Reporting-Tools verwenden kann. Ich plane, einen ODBC-Treiber auf dem Client zu implementieren. So können Geschäftsbenutzer Crystal Reports, Excel usw. zum Abrufen von Daten aus dem Datenspeicher verwenden. OQL, obwohl es wahrscheinlich eine nette Abfragesprache ist (ich habe es nie benutzt), ist nicht so weit verbreitet wie SQL. – codeape
+1 beide: eines der größten Probleme mit OO-Datenbanken ist genau das Fehlen von Berichts-Engines :( – van