Heisann!
Er i startfasen på et prosjekt hvor jeg skal ha et lokalt program som snakker
med en web server. Du søker opp ting via programet og får en liste med svar tilbake fra serveren. Litt slik som spotify, men dette har ikke med musikk å gjøre.
På serveren vil det ligge mange filer og disse skal du kunne søke opp med tags. Tenkte i utgangspunktet å lage et python script som tok imot requests på server, sendte requesten videre til mysql, som igjen sender svar tilbake til python, så tilbake til klienten.
Har brukt en del mysql før, men har hatt store problemer med å få det til å instalere på maskinen her, så begynte å forske litt på å droppe mysql helt å gjøre dette med søkefunksjoner i python. Så jeg opprettet 20 000 tekst filer som har random navn med 50 tegn og gikk igjennom filene slik:
Så kjørte jeg testen slik
Svaret jeg får er etter å ha kjørt testen en del ganger er at det tar ca 0.03 sek å søke igjennom 20 000 filer med 4 tags som query.
Dette er mer en bra nok for meg, kommer trolig aldri til å ha mer en 10 000 filer, men det føles alikevel feil å gjøre det slik da alle bruker databaser til slike opperasjoner. Er det en god grunn til å heller bruke mysql en ren python?
Er i startfasen på et prosjekt hvor jeg skal ha et lokalt program som snakker
med en web server. Du søker opp ting via programet og får en liste med svar tilbake fra serveren. Litt slik som spotify, men dette har ikke med musikk å gjøre.
På serveren vil det ligge mange filer og disse skal du kunne søke opp med tags. Tenkte i utgangspunktet å lage et python script som tok imot requests på server, sendte requesten videre til mysql, som igjen sender svar tilbake til python, så tilbake til klienten.
Har brukt en del mysql før, men har hatt store problemer med å få det til å instalere på maskinen her, så begynte å forske litt på å droppe mysql helt å gjøre dette med søkefunksjoner i python. Så jeg opprettet 20 000 tekst filer som har random navn med 50 tegn og gikk igjennom filene slik:
Kode
def findInFiles(query): files = os.listdir(Path) matches = [] for file in files: for q in query: if file.find(q) != -1: matches.append(file) return matches
Kode
def runTestPython(): StartTime = time.clock() Result = findInFiles(['22043', '99234', '50035', '32423']) for file in Result: getInfoFromFile(Path + os.path.sep + file) #getInfoFromFile leser texten i filene som er funnet. EndTime = time.clock() Elapsed = EndTime - StartTime print Elapsed
Dette er mer en bra nok for meg, kommer trolig aldri til å ha mer en 10 000 filer, men det føles alikevel feil å gjøre det slik da alle bruker databaser til slike opperasjoner. Er det en god grunn til å heller bruke mysql en ren python?