Seite 2 von 2

Re: Python und MS SQL FILESTREAM

Verfasst: Samstag 13. April 2019, 12:17
von Sirius3
Es ist immer noch schlecht, dass tabelle eine Variable ist, normalerweise hat man keine Variablen Tabellennamen.

UniqueIdentifier über gibt man normalerweise nicht bei INSERT, weil die automatisch erstellt werden sollten. In Deinem ersten Post, ist der ja auch noch nicht da.

Re: Python und MS SQL FILESTREAM

Verfasst: Samstag 13. April 2019, 12:32
von badi113
@Sirius3: was meinst du mit UniqueIdentifier?

Außerdem muss die Tabelle eine Variable sein, da es verschiedene Tabellen später sind wo das gespeichert werden soll.

Z.B.: 23422
23491
Usw.

Da die Werkzeuge zu einer bestimmten Maschine gehören

Re: Python und MS SQL FILESTREAM

Verfasst: Samstag 13. April 2019, 12:37
von Sirius3
Das mußt Du doch selbst wissen, denn Du hast die Tabelle erzeugt.

Re: Python und MS SQL FILESTREAM

Verfasst: Samstag 13. April 2019, 12:42
von badi113
@Sirius3: Klick jetzt weiß ich wieder, das steht bei ID drinne.

Aber so ganz genau weiß ich das nicht da ich das so kopiert habe :|

Re: Python und MS SQL FILESTREAM

Verfasst: Samstag 13. April 2019, 17:16
von sparrow
Dein Tabellendesign ist kaputt, wenn die Struktur der Tabellen für verschiedene Maschinen gleicht ist und sich nur anhand des Namens der Relation unterscheidet.
In dem Fall gehört der Name der Relation in eine Spalte.

Stichworte zum Googeln: "Relationale Datenbanken" und "Normalisierung".

In deinem Fall heißt das: Die Tabelle muss eine Spalte "Maschine" haben statt lauter Tabellen mit dem Maschinennamen.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 10:13
von badi113
Hy Leute,
habe den Rat befolgt so das alle Wkz in eine Tabelle kommen.

Nun habe Ich die Datenbank und die Tabelle neu erstellt, um noch mal ganz von vorne damit anzufangen.

Die Tabelle ist wie folgt aufgebaut.

Code: Alles auswählen

CREATE TABLE Datenbank.dbo.Werkzeuge
(
    [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
	[Name] VARCHAR(MAX) NOT NULL, 
    [SerialNumber] INTEGER UNIQUE,
    [Chart] VARBINARY(MAX) FILESTREAM NULL
)
GO

Code: Alles auswählen

	if result is None:
                
                sql = ("INSERT INTO Werkzeuge([Name], [SerialNumber], [Chart])values(?, ?, ?)")
                cur.execute(sql, s_name, manr,  bild1)    
                
                
            else:
                print("weiter")
                tkinter.messagebox.showwarning("info", "Werkzeug schon vorhanden")
                
            con.commit()
            con.close()
            abbrechen()
Nun hab ich Id nicht mit reingenommen in INTO und bekomme trotzdem die Fehlermeldung

pyodbc.IntegrityError: ('23000', '[23000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Der Wert NULL kann in die Id-Spalte, Datenbank.dbo.Werkzeuge-Tabelle nicht eingefügt werden. Die Spalte lässt NULL-Werte nicht zu. Fehler bei INSERT. (515) (SQLParamData); [23000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Die Anweisung wurde beendet. (3621)')


Obwohl id gar nicht erwähnt wird?.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 10:29
von __blackjack__
@badi113: Naja, was wird denn in `id` eingetragen wenn kein Wert dafür übergeben wird? Das ist wohl etwas was Du auf Datenbankseite regeln musst.

Und der `execute()`-Aufruf ist falsch. Die drei Werte müssen als *ein* Argument übergeben werden. Die API sieht für diese Methode nur zwei Argumente vor – die SQL-Anweisung als erstes Argument und optional die Werte für Platzhalter als zweites Argument. Dass da keine Ausnahme kommt, liegt an dem konkreten Datenbankmodul.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 10:42
von __deets__
@__blackjack__: die Fehlermeldung die er vorher bekommen hat, suggeriert das er eben doch mehrere Argumente uebergeben muss. Ggf. ist pyodbc da nicht-standard?

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 10:50
von Sirius3
@__deets__: nein, die vorherige Fehlermeldung sagte, dass er keine Liste von Tuplen übergeben darf. Der OP hat etliche Varianten durchgeraten, aber nie die richtige erwischt.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 10:55
von __deets__
Ahhh. Nunja, der Rate-Raum ist ein grosser welcher....

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 11:03
von badi113
@__blackjack__: Aber heißt nich uniqueidentifier das der SQL Server das selber macht? Also den eintrag generieren?

Code: Alles auswählen

if result is None:
                eintrag = (s_name, manr, bild1)
                sql = ("INSERT INTO Werkzeuge([Name], [SerialNumber], [Chart])values(?, ?, ?)")
                cur.execute(sql, eintrag)    

Meinst du in etwa so?

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 11:11
von __blackjack__
@badi113: Ja genau so war das gemeint mit den Werten.

MS SQL ist nicht meine Baustelle, keine Ahnung wie man da die DB dazu bewegt selbstständig einen Schlüssel zu generieren.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 11:17
von sparrow
Meine MS SQL-Zeit ist lange vorbei und die machen viel seltsames Kram - weshalb man sich damit eigentlich nicht rumschlagen will.
Ich glaube das Schlüsselwort war "identity" um eine selbstinkrementierende ID zu erhalten.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 11:40
von badi113
@sparrow: Von wollen kann keine rede sein, aber wir arbeiten nur mit ms sql :cry:

Eigentlich wahr es mal so gedacht dass alles in txt Dateien und Ordner gespeichert werden sollte, hatt auch alles geklappt. Bis jemand kam und meinte in SQL wäre besser.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 12:02
von __deets__
Ist es auch. Die Menge an Fehlern, die du bei einer selbstgestrickten Loesung machen kannst ist mitnichten geringer.

Re: Python und MS SQL FILESTREAM

Verfasst: Montag 15. April 2019, 12:09
von badi113
Glaub ich ja auch, aber das das so ausartet hätt ich nicht gedacht. Zumindest das mit den Bildern, text oder zahlen in die datenbank zu bekommen ist ja einfach aber Bilder!. :shock:

Re: Python und MS SQL FILESTREAM

Verfasst: Mittwoch 17. April 2019, 10:48
von badi113
Moin Jungs, man kann ja auch bilder ohne filestream speichern.
Was ist eure meinung dazu?.

Bekomme die Bilder als binary gespeichert.
Größe der Bilder währ max 500kb.

Re: Python und MS SQL FILESTREAM

Verfasst: Mittwoch 17. April 2019, 12:06
von Sirius3
@badi113: bisher habe ich noch nicht gesehen, dass Du Probleme mit den Bildern hast, Du hast viel grundlegendere Probleme.
Bei großen Datenmengen (BLOBs) kann es schon Sinn machen, die auf einem Filesystem zu speichern. Kommt halt auch drauf an, was das Datenbanksystem taugt.

Re: Python und MS SQL FILESTREAM

Verfasst: Mittwoch 17. April 2019, 18:06
von badi113
@Sirius3: Naja bisher bekam ich halt die Bilder nicht in den Filestream, ich weiß das mein Script bestimmt noch Fehler oder Unstimmigkeiten aufweisen, oder was meinst du?. Aber wie gesagt ich mach das nur nebenbei als Hobby und bringe es mir selbst bei.