Hallo,

Misschien dat dit topic thuis hoort in de koffiehoek, maar een tijd geleden ben ik begonnen met Python omdat ik een executable wou hebben die mij helpt met mijn werk. Hierin ben ik mij gaan verdiepen en heb een hele stap gemaakt, maar ik kom duidelijk kennis te kort om het programma vloeiend en vlekkeloos te laten lopen (Is langzaam, freeze momenten, etc).

Zijn er hier mensen die gevorderde kennis hebben van Python en mij hiermee willen helpen?
Ik vraag het hier omdat ik tot nu toe alleen engelse forums kan vinden (Stack***, Dani***) en dit toch de communicatie lastig maakt.

Er staat eventueel een vergoeding tegenover, maar ik wil er ook zelf van leren dus niet compleet uit handen geven.

Michael
Om eerlijk te zijn ben ik alleen maar aan het spelen geweest met python.
Ik heb een orange pi gekocht om daarmee uiteindelijk een python applicatie te maken om mijn aquarium mee te monitoren. Vooral het GPIO verhaal vind ik erg interessant omdat daar sensoren e.d. op aangesloten kunnen worden. Dat werkt in python erg makkelijk. Mijn eerste gedachte is/was om het webbased te maken, maar nu ik dit topic zo zie en ook het idee van sqlite erbij benoem is het misschien niet eens zo'n slecht idee om een stand alone programma te maken. ;) Dus jou vragen brengen mij op creatieve ideeën.

Overigens heb ik verder nog niet echt iets concreets gemaakt met python, uitsluitend mee gespeeld.

Maar goed, even naar jou topic terug:
Sorry dat ik even doorvraag, maar is het een idee om op de server sqlite te zetten?
Want dan zou je met een cronjob via een simpel script (python?) het updaten van je database bestand al kunnen oplossen.
Je zou dan het database bestand kunnen kopiëren naar je eigen pc.
Volgens mij kan je met python iets van ftplib om een optie te hebben ala ftp iets op te halen, dus dan zou je alleen in de applicatie bij opstarten de nieuwe database hoeven downloaden.
https://docs.python.org/3.0/library/ftplib.html
voor versie 2.7 (weet niet welke je gebruikt) kan je 3.0 in de link veranderen naar 2.7 :)

Willen helpen altijd, alleen kunnen helpen is qua tijd wat lastiger.
Vragen beantwoorden/meedenken kan altijd he. :P
Super dat je meedenkt en dat ik indirect jou weer op ideeën breng ;-)
Het programma moet draaien op de PC van het werk dus ik heb geen mogelijkheden om hier in het bedrijf een server hiervoor te gaan opzetten. Online kan natuurlijk ook niet, want dan heb ik geen toegang tot de schijf waar de afbeeldingen op staan. Het zou dus vanaf de pc moeten waarop het programma draait. Eventueel een background-process o.i.d.
hmmm.. Dat maakt het wat lastiger..

Misschien is je ingeving met een aparte applicatie om te updaten dan nog niet eens zo slecht bedacht.
Dat in de achtergrond laten doen is een optie. Ik neem aan dat het niet in real time hoeft te bekijken of er nog iets nieuws is. Dan hoeft het niet eens met een stand alone applicatie te zijn.
Als je een python script maakt die dat doet:

Bestanden bekijken/vergelijken -> database updaten

dan kan je eventueel het met een cronjob oplossen.

Je uiteindelijke applicatie om de dingen te bekijken e.d. is al klaar. Alleen aan de database koppelen is dan nog nodig.
@Bart V B en anderen die kunnen/willen helpen uiteraard.
Ik ben nog eens aan de slag gegaan met dit project en heb intussen een updater.py met 3 entry's waarin je de gewenste directory kiest en deze gegevens worden vervolgens in een sqlite database opgeslagen.
Nou was ik heel erg aan het struggelen met INSERT en UPDATE in een glob-loop (UPDATE als bestandsnaam bestaat anders INSERT). Dit werkt goed, maar duurt erg lang omdat een insert wordt gedaan, bestand gesloten, bestand geopend, insert, bestand sluiten, etc. en dat meer dan 2000 keer voor 1 directory (de 2e is nog veel groter) :-) Nou vond ik iets over BEGIN en END TRANSACTION of een executemany.
Er kan dan gewoon DELETE FROM *TABLE* en VACUUM worden gedaan (TRUNCATE kennen ze niet :-)) en dan weer gevuld worden.

Nou ben ik bezig met executemany, wanneer ik eerst een dictonary maak van de glob en deze wil ik dan in een keer uitvoeren, maar tot mijn grote ergernis wil dit nog niet werken. Heb jij hier enige ervaring mee of ben je bereid mee te helpen/denken? Vanavond kan ik hier wel wat code plaatsen.
Je bent nu al met oplossingen bezig, maar het vraagstuk is mij niet duidelijk.

Hoe wil je in/door deze afbeeldingen kunnen zoeken? Welke criteria gebruik je? En wat ben je uiteindelijk aan het maken - een soort van fotogalerij, een archief, iets anders? Moet dit een standalone applicatie zijn? Hoe vaak verandert de samenstelling van deze collectie en hoe ingrijpend (met name als je sqlite gebruikt, als je overwegend uit de database leest kan dit efficiënt zijn maar als je ook veel schrijft dan is sqlite wellicht toch niet zo'n verstandige keuze)? Ik kan mij er geen voorstelling van maken.

Je komt ook een beetje via de zijdeur binnen met de vraag om Python-kennis. Niet zozeer omdat dit voornamelijk een PHP-forum is maar meer omdat je er verder weinig tot niets bijvertelt :p.
Ik ben een half jaar geleden begonnen met Python omdat we op het werk tegen een "probleem" aan liepen.
Wij maken machine programma's en slaan deze op onder een nummer. Dit nummer zou terug moeten keren, maar het gebeurt nog al eens dat het programma een nieuw nummer krijgt waarna we het programma omdat moeten maken want we weten niet meer onder welk nummer die is opgeslagen.
Van deze programma's wordt ook een thumbnail gemaakt en zijn te vinden op de server. Hier zijn er nu meer dan 175.000 van. (Dit betekent niet dat deze moeten worden weergegeven, dat blijft beperkt tot tientallen).
Aangezien het programma en de thumbnail allebei dat nummer als naam hebben dacht ik die eenvoudig aan elkaar te kunnen linken en weer te geven.
Dit eerste programma was totaal niet bruikbaar omdat het heel erg lang duurde voordat er een aantal afbeeldingen waren geladen. Met meer dan 20 afbeeldingen liep het compleet vast.
Naar een aantal maanden heb ik de ijskast weer open getrokken en ben ik nu bezig dit programma te splitsen.
Er komt een updater en een viewer. De updater slaat de bestanden in de programma map op in een database, slaat de afbeeldingen op in een database en zou vervolgens relaties moeten opslaan in de database. Deze relaties wil ik dan weergeven in de viewer.

[size=xsmall]Toevoeging op 05/08/2016 15:49:30:[/size]

De gegevens hoeven niet vaak geüpdatet te worden. Eens per maand/half jaar is prima. Ook sqlite kan, wat ik gelezen heb, makkelijk tienduizenden records in een seconde toevoegen, maar dan zou het dus wel met een transaction of executemany moeten gaan, maar mijn eigen kennis hiervan is 0,1 dus het is vooral wat ik lees en door het te doen.

Nou ben ik bezig met executemany, wanneer ik eerst een dictonary maak van de glob en deze wil ik dan in een keer uitvoeren, maar tot mijn grote ergernis wil dit nog niet werken. Heb jij hier enige ervaring mee of ben je bereid mee te helpen/denken? Vanavond kan ik hier wel wat code plaatsen.

Laat eens wat code zien..
Totaal geen ervaring mee, maar houd wel van een stukje puzzelen.
En we leren er ook weer wat van.
Bart V B op 06/08/2016 09:45:20

Laat eens wat code zien..
Totaal geen ervaring mee, maar houd wel van een stukje puzzelen.
En we leren er ook weer wat van.

Ik heb de hele code van de updater in pastebin gezet.
Het gaat in dit geval dan over regel 241-243
237-252 is hoe ik het op dit moment doe, maar ik wil dus kijken of er nog snelheidswinst te halen is met executemany of transactions.
De fout die ik krijg met regel 241 en 243 is:
TypeError: function takes exactly 2 arguments (1 given)

De fout die ik krijg met regel 242 is:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 3 supplied.

Zelf ook geen ervaring met Python, dus ik probeer mee te denken. Als ik googled op deze fout:


TypeError: function takes exactly 2 arguments (1 given)


Dan kom ik hier uit.

Waarschijnlijk heeft de fout van regel 242 met regel 241/243 te maken. Hopelijk heb je hier wat aan.
Bedankt voor de vele helpende reacties. De vraag is niet meer van toepassing. Ik dacht dat de foutmelding iets met tuples te maken had, maar misschien ook met de multidimensionale dictonary. Ik kan hier niet veel over vinden en heb tevergeefs van alles geprobeerd.
Wel ben ik wijzer geworden dat sqlite automatisch transactions toepast en ook automatisch commits uitvoerd. Ik heb daarom de commits verwijderd en het wegschrijven gaat nu in één keer.

Reageren