Import von Funktionen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
arti73
User
Beiträge: 20
Registriert: Montag 12. September 2016, 12:20

Hi,

ich experimentiere rum. Nun hab ich wie im Tutorial die Fibonacci-Funktion in eine zweite Datei gepackt und importiere die. Das geht wunderbar...

Nun habe ich in einer weiteren Datei eine Funktion erstellt, die eine SQLite DB erstellen soll. Ich meine, dass da nix anders dran ist als bei der Fibonacci. Während die allerdings geht, kriege ich bei der anderen einen Traceback: Attribute Error: das Modul xy hat kein Attribut x.

Ich weiß nicht, was ich falsch mache :K

Code: Alles auswählen

# -*- coding: utf-8 -*-



def fib(n):
    a, b = 0, 1
    for i in range(n):
        a, b = b, a + b
    return a
das lässt sich mit

Code: Alles auswählen

print (mFibonacci.fib(100))
aus der main.py aufrufen.

Code: Alles auswählen

# -*- coding: utf-8 -*-
import sqlite3

def createdb(n):

    print("Datenbank wird geöffnet!")

    connection = sqlite3.connect("pirpirituba.db")
    cursor = connection.cursor()

    sql_command = """
    CREATE TABLE patenkind (
    id INTEGER PRIMARY KEY,
    fname VARCHAR (30),
    lname VARCHAR (30),
    gender CHAR(1),
    bdate DATE,
    jdate DATE,
    pate INTEGER);"""

    cursor.execute(sql_command)

    sql_command = """
    CREATE TABLE fotos (
    id INTEGER PRIMARY KEY,
    fname VARCHAR (30)); """

    cursor.execute (sql_command)

    connection.commit()
    connection.close()

    print("Datenbank wurde geschlossen!")
Ahhhhhhhhhhh, das war Copy & Paste. Das wird wohl was mit der Textdatei zu tuen haben... DAS lässt sich nämlich nicht aufrufen. Das erkennt der bestimmt überhaupt nicht...

Das check ich erst.
arti73
User
Beiträge: 20
Registriert: Montag 12. September 2016, 12:20

Hat sich erledigt, das hat irgendwas mit der Zeichenkodierung zu tuen...
BlackJack

Bei Datenbanken gilt das gleiche für Namen wie in Programiersprachen: Keine komischen Prä- und Suffixe und Abkürzungen. Wenn man `first_name` meint, sollte man nicht `fname` schreiben. Das führt am Ende bloss zu Verwirrung, raten, und Fehlern, weil falsch geraten wurde oder Namen verwechselt wurden, weil sie so ähnlich und gleichzeitig nicht wirklich verständlich waren. Das `fname` in der `fotos`-Tabelle ist genau so wie das `fname` in der `patenkind`-Tabelle deklariert, heisst das in der `fotos`-Tabelle jetzt eigentlich `first_name` oder `filename`? Da geht's dann schon los. Warum `patenkind` (Einzahl) und `fotos` (Mehrzahl)? Eigentlich ist Einzahl richtiger, denn so eine Tabellendeklaration beschreibt *einen* Datensatz. Das ist im Grunde wie ein `RECORD` in Pascal, `struct` in C, oder der Datenattribute-Teil einer Klassendeklaration in Java & Co.

Apropos Klassen: Jetzt doch nicht das ORM von SQLAlchemy? Da würde man sich Tabellen von SQLAlchemy aus den Model-Klassen erstellen lassen.
arti73
User
Beiträge: 20
Registriert: Montag 12. September 2016, 12:20

Ne, wollte hier nur was ausprobieren. Ging eigentlich nur um die Sache mit den Modulen.

Ich denke schon, dass ich das versuche mit Alchemy zu bauen. Und das mit den Namen werd ich beherzigen :)
Antworten