Create Table über Python

Hallo an alle ich habe eine Skript welches prüfen soll ob eine Tabelle schon anliegt und wenn nicht diese erzeugen soll.
An sich kein Problem aber das ganze mit Python und Klassen sieht schon anders aus. Da ich keinen Fehler mehr sehe wolle ich mal fragen ob ihr noch einen entdeckt. Ein Print mit “db created” erhalte ich aber die Tabelle wird nicht erzeugt.

import psycopg2
import psycopg2.extras

hostname = ‘192.168.178.29’
database = ‘IOT_project’
username = ‘postgres’
pwd = ‘postgres’
port_id = 5432
conn = None
cur = None

conn = psycopg2.connect(
host=hostname,
dbname=database,
user=username,
password=pwd,
port=port_id)

class Schema:
def init(self):
# self.conn = psycopg2.connect(host=hostname, dbname=database, user=username, password=pwd, port=port_id)
self.conn = conn.cursor() # ohne Zusatzbibliothek import psycopg2.extras
self.create_todo_table()

def create_todo_table(self):
    #       query = """
    #           CREATE TABLE IF NOT EXISTS public.todo9
    #           (
    #               ids serial,
    #               title character varying(40),
    #               description character varying(100),
    #               PRIMARY KEY (ids)
    #           );
    #       """
    query = '''CREATE TABLE IF NOT EXISTS emp (
                        id      int PRIMARY KEY,
                        name    varchar(40) NOT NULL,
                        salary  int,
                        dept_id varchar(30)) '''

    self.conn.execute(query)
    print("db created")

class TodoModel:

def __init__(self):
    self.conn = conn.cursor()

def create(self, title, description):
    query = f'insert into public.todo9 (Title, Description) values("{title}","{description}")'

    result = self.conn.execute(query)
    self.conn.commit()

    return f"OK {result.lastrowid}"

def get_all(self):
    query = f'Select * from public.todo9'
    result = self.conn.execute(query).fetchall()
    return result

PS: wie kann ich Code kennzeichnen?

Ich weiss nicht obs dir hilft, aber ich nutze für DB-Interaktion eigentlich immer sqlalchemy.

Grüße Uwe

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.