SQLite is perhaps the only well-used DBMS that supports multiple forms of escaping spaces, symbols/characters, and keywords:
Double Quotes (ANSI standard, used by Oracle/DB2/Postgres/Teradata)
cur.execute('''
CREATE TABLE "GuVY1" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"Ertrag" INTEGER,
"Betriebskosten" INTEGER,
"Bruttobetriebsgewinn" INTEGER,
"Betriebsausgaben" INTEGER,
"Forschung und Entwicklung" INTEGER,
"Vertriebs- und Verwaltungskosten" INTEGER,
"Personalkosten" INTEGER,
"Abschreibung und Abgrenzungen" INTEGER,
"Sonstige Betriebskosten" INTEGER,
"Geschäftsaufwand" INTEGER,
"Betriebseinnahmen vor Zinsen und Steuern" INTEGER,
"Neutrale Erträge" INTEGER,
"Gewinn vor Einkommenssteuer" INTEGER,
"Steueraufwand" INTEGER,
"Nettogewinn für weitere Geschäftstätigkeit" INTEGER,
"Nettogewinn" INTEGER,
"Nettogewinn verfügbar für Aktionäre" INTEGER
)
''')
Backticks (for MySQL/MariaDB compatibility)
cur.execute('''
CREATE TABLE `GuVY1` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
`Ertrag` INTEGER,
`Betriebskosten` INTEGER,
`Bruttobetriebsgewinn` INTEGER,
`Betriebsausgaben` INTEGER,
`Forschung und Entwicklung` INTEGER,
`Vertriebs- und Verwaltungskosten` INTEGER,
`Personalkosten` INTEGER,
`Abschreibung und Abgrenzungen` INTEGER,
`Sonstige Betriebskosten` INTEGER,
`Geschäftsaufwand` INTEGER,
`Betriebseinnahmen vor Zinsen und Steuern` INTEGER,
`Neutrale Erträge` INTEGER,
`Gewinn vor Einkommenssteuer` INTEGER,
`Steueraufwand` INTEGER,
`Nettogewinn für weitere Geschäftstätigkeit` INTEGER,
`Nettogewinn` INTEGER,
`Nettogewinn verfügbar für Aktionäre` INTEGER
)
''')
Square Brackets (for SQL Server/MS Access compatibility)
cur.execute('''
CREATE TABLE [GuVY1] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
[Ertrag] INTEGER,
[Betriebskosten] INTEGER,
[Bruttobetriebsgewinn] INTEGER,
[Betriebsausgaben] INTEGER,
[Forschung und Entwicklung] INTEGER,
[Vertriebs- und Verwaltungskosten] INTEGER,
[Personalkosten] INTEGER,
[Abschreibung und Abgrenzungen] INTEGER,
[Sonstige Betriebskosten] INTEGER,
[Geschäftsaufwand] INTEGER,
[Betriebseinnahmen vor Zinsen und Steuern] INTEGER,
[Neutrale Erträge] INTEGER,
[Gewinn vor Einkommenssteuer] INTEGER,
[Steueraufwand] INTEGER,
[Nettogewinn für weitere Geschäftstätigkeit] INTEGER,
[Nettogewinn] INTEGER,
[Nettogewinn verfügbar für Aktionäre] INTEGER
)
''')
Nonetheless as commented above, consider naming table/column identifiers with alphanumeric characters (not starting with a number) with underscore as only symbol and avoid keywords/reserved words of DBMS. This includes avoiding accented characters as used by various languages. Doing so, you avoid any need of above escaping.
cur.execute('''
CREATE TABLE GuVY1 (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
Ertrag INTEGER,
Betriebskosten INTEGER,
Bruttobetriebsgewinn INTEGER,
Betriebsausgaben INTEGER,
Forschung_und_Entwicklung INTEGER,
Vertriebs_und_Verwaltungskosten INTEGER,
Personalkosten INTEGER,
Abschreibung_und_Abgrenzungen INTEGER,
Sonstige_Betriebskosten INTEGER,
Geschäftsaufwand INTEGER,
Betriebseinnahmen_vor_Zinsen_und_Steuern INTEGER,
Neutrale_Ertrage INTEGER,
Gewinn_vor_Einkommenssteuer INTEGER,
Steueraufwand INTEGER,
Nettogewinn_fur_weitere_Geschaftstatigkeit INTEGER,
Nettogewinn INTEGER,
Nettogewinn_verfugbar_fur_Aktionare INTEGER
)
''')
-in double quotes, or backticks or square barackets[...]- forpas