[Tutor] How to write database-agnostic python code? (Is this even possible?)
boB Stepp
robertvstepp at gmail.com
Tue Sep 12 22:15:10 EDT 2017
On Tue, Sep 12, 2017 at 8:58 PM, boB Stepp <robertvstepp at gmail.com> wrote:
> On Tue, Sep 12, 2017 at 2:17 PM, Mats Wichmann <mats at wichmann.us> wrote:
>> On 09/12/2017 01:05 PM, boB Stepp wrote:
>>> As I continue to read about SQL, one thing jumps out: There are many
>>> differences between how SQL statements are implemented among the
>>> different database products. Even for relatively simple,
>>> straightforward things like field concatenation. One DB might use
>>> "||" as the operator. Another uses "+". Yet another only uses a
>>> "CONCAT" function. This is crazy!
>
> [...]
>
>> But dealing with "local extension to SQL" is a different problem. SQL
>> is actually a standard and should work the same everywhere, but then
>> people decide they need to improve it. Being agnostic means avoiding
>> mysql-specific syntax, postgres-specific syntax, etc. Which means you
>> need to know what is specific in the first place...
>
> In the example I was alluding to, concatenating fields, surely this is
> a "standard SQL" query? So, for instance, if I had a Sales table with
> FirstName and LastName fields and wanted to use SQL to get the full
> name from these:
>
> 1) In Microsoft SQL Server:
> SELECT
> FirstName + ' ' + LastName
> FROM Sales
>
> 2) MySQL:
> SELECT
> CONCAT(FirstName, ' ', LastName)
> FROM Sales;
>
> 3)SQLite:
> SELECT
> FirstName || ' ' || LastName
> FROM Sales;
>
> And these would be the SQL commands/statements I would have
> cursor.execute use from the sqlite3 module...
I misspoke somewhat here. I suppose there are different database
wrappers to access different databases. But the standard python
database api should still use a cursor.execute to run SQL commands no
matter the wrapper?
> ... They would be different
> depending on which database product I was using. Am I horribly
> misunderstanding something??? And if not, I have several other
> apparently fundamental SQL examples where similar situations exist
> based on the book on SQL I am only 43 pages into!
>
> --
> boB
--
boB
More information about the Tutor
mailing list