Forum » Programiranje » python in postgresql
python in postgresql
arjan_t ::
WarpedGone ::
Nasvet: znebi se SQLov zapečenih v aplikacijo.
Na bazi nared svoj API i.e. nabor stored procedur - Čimmanj pameti v klientu, čimveč pameti v stored procedurah.
Na bazi nared svoj API i.e. nabor stored procedur - Čimmanj pameti v klientu, čimveč pameti v stored procedurah.
Zbogom in hvala za vse ribe
lopow ::
evo zadeva dela. zatipkal sem se in nisem na pravem mestu naredil zamenjave.
Tako da sedaj deluje,
vendar moram malo porihtati količino izpisov, tako da bo začel iskat komaj ob tretji črko (tako kot ste mi svetovali) in malo preveriti kako je s hitrostjo.
dečki hvala, sevada vas bom pa še potreboval.
sem pa gledal malo bolj ta SQLAlchemy in se mi zdi zelo dobra zadeva, vendar pa je na njihovi spletni strani bolj malo napisanega. A ima kdo kakšne izkušnje, kje se najdejo kakšni tutoriali,...
Tako da sedaj deluje,
vendar moram malo porihtati količino izpisov, tako da bo začel iskat komaj ob tretji črko (tako kot ste mi svetovali) in malo preveriti kako je s hitrostjo.
dečki hvala, sevada vas bom pa še potreboval.
sem pa gledal malo bolj ta SQLAlchemy in se mi zdi zelo dobra zadeva, vendar pa je na njihovi spletni strani bolj malo napisanega. A ima kdo kakšne izkušnje, kje se najdejo kakšni tutoriali,...
lopow ::
ja,danes ko sem prišel s šihta in predem sem se tega mojega problema lotil sem na hitro preletil in semi je zdelo da ni kaj dosti.
Bom bolj podrobno pogledal.
Hvala
Bom bolj podrobno pogledal.
Hvala
brodul ::
U, SQLalchemy ma odlicno dokumentacijo. Tudi ce nisi SQL ninja, ko enkrat preberes cel PDF ti rata veliko stvari jasno. Super je tudi, ker je sama knjiznica sestavljena iz vecih nivojev in si lahko gres optimizacije na vseh nivoji. PA testerat se da tudi dosti sane. Potem mas pa se preprosto orodje za migracije alembic.
Imo ce hoces naredit resno aplikacijo (iz stalisca izkusenj pa uporabe) se splaca web pogledat:
Par predlogov:
Django:
https://www.djangoproject.com/
Pyramid:
http://docs.pylonsproject.org/projects/...
Tornado:
http://www.tornadoweb.org/en/stable/doc...
Mikro framework flask:
http://flask.pocoo.org/docs/patterns/sq...
Spises API potem pa lep GUI cez z AngularJS ali MarionetteJS mogoce kaj tretjega.
Imo ce hoces naredit resno aplikacijo (iz stalisca izkusenj pa uporabe) se splaca web pogledat:
Par predlogov:
Django:
https://www.djangoproject.com/
Pyramid:
http://docs.pylonsproject.org/projects/...
Tornado:
http://www.tornadoweb.org/en/stable/doc...
Mikro framework flask:
http://flask.pocoo.org/docs/patterns/sq...
Spises API potem pa lep GUI cez z AngularJS ali MarionetteJS mogoce kaj tretjega.
Pretending to be a mature adult is so exhausting.
WarpedGone ::
In potem si začneš pulit lase ker v novi podverziji 'izbranega' browserja stvar ne dela.
In v isti verziji na prijateljevi mašini eno polje poravnano z drugim etc. Web Aplikacije so primerne branju cajtng ne pa resnemu delu/vnosu.
Žal.
Da se več-sekundnih lagov pri pritisku kategakoli gumba sploh ne dotikam. V kontroliranem okolju zganjat Web je strel v oba gležnja.
Ampak to je seveda politično nekorektno - danes je še za tetris treba met 3level arhitekturo in ločen AppServer, da se lahko na konc hebeš z JS...
Je pa 'lepo', ja...
In v isti verziji na prijateljevi mašini eno polje poravnano z drugim etc. Web Aplikacije so primerne branju cajtng ne pa resnemu delu/vnosu.
Žal.
Da se več-sekundnih lagov pri pritisku kategakoli gumba sploh ne dotikam. V kontroliranem okolju zganjat Web je strel v oba gležnja.
Ampak to je seveda politično nekorektno - danes je še za tetris treba met 3level arhitekturo in ločen AppServer, da se lahko na konc hebeš z JS...
Je pa 'lepo', ja...
Zbogom in hvala za vse ribe
Zgodovina sprememb…
- spremenilo: WarpedGone ()
hruske ::
lopow, par opazk.
Predvidevam, da uporabljaš psycopg2 za dostop do PostgreSQL. Klic "cursor.execute" sprejme SQL stavek, poleg tega pa lahko tudi parametre za SQL stavek, glej dokumentacijo, tam ko piše "pass data". Podatke od SQL stavka ločujemo zato, da baza razume, da gre za podatek in ne za kako rezervirano besedo v SQL sintaksi, ter s tem preprečimo SQL injection.
Glede onih čudnih presledkov - verjetno si mislil znak \xa0, ki je nedeljiv presledek in je pomensko zamenljiv z navadnim presledkom, a ga računalnik razume kot različen znak.
Če se da, išči po bazi z uporabo SQL where, tako kot je predlagal jype, ker bo skoraj v vseh primerih hitreje, ko pa bo podatkov več, pa še toliko bolj.
Da boš razumel zakaj ti ljudje predlagajo da izdelaš web aplikacijo - ker je gradnja uporabniškega vmesnika v spletni aplikaciji nekoliko enostavnejša, sploh če aplikacija služi predvsem vnosu nekih podatkov. Tovrstno filtriranje, kot si ga želiš ti, se da npr. zelo enostavno rešiti iskanje oz. dopolnjevanje vnosov z raznimi autocomplete javascripti - http://jqueryui.com/autocomplete/. Koristna lastnost spletne aplikacije je tudi to, baza in aplikacija tečeta centralno, zato imaš nekoliko bolj kontrolirano okolje in se ne rabiš ukvarjat toliko z različnimi operacijskimi sistemi. No, ampak če imaš veliko opravka z datotekami, ta prednost spletne aplikacije praktično izgine.
Predvidevam, da uporabljaš psycopg2 za dostop do PostgreSQL. Klic "cursor.execute" sprejme SQL stavek, poleg tega pa lahko tudi parametre za SQL stavek, glej dokumentacijo, tam ko piše "pass data". Podatke od SQL stavka ločujemo zato, da baza razume, da gre za podatek in ne za kako rezervirano besedo v SQL sintaksi, ter s tem preprečimo SQL injection.
Glede onih čudnih presledkov - verjetno si mislil znak \xa0, ki je nedeljiv presledek in je pomensko zamenljiv z navadnim presledkom, a ga računalnik razume kot različen znak.
Če se da, išči po bazi z uporabo SQL where, tako kot je predlagal jype, ker bo skoraj v vseh primerih hitreje, ko pa bo podatkov več, pa še toliko bolj.
Da boš razumel zakaj ti ljudje predlagajo da izdelaš web aplikacijo - ker je gradnja uporabniškega vmesnika v spletni aplikaciji nekoliko enostavnejša, sploh če aplikacija služi predvsem vnosu nekih podatkov. Tovrstno filtriranje, kot si ga želiš ti, se da npr. zelo enostavno rešiti iskanje oz. dopolnjevanje vnosov z raznimi autocomplete javascripti - http://jqueryui.com/autocomplete/. Koristna lastnost spletne aplikacije je tudi to, baza in aplikacija tečeta centralno, zato imaš nekoliko bolj kontrolirano okolje in se ne rabiš ukvarjat toliko z različnimi operacijskimi sistemi. No, ampak če imaš veliko opravka z datotekami, ta prednost spletne aplikacije praktično izgine.
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
WarpedGone ::
Če ti ne znaš, to ne pomeni, da ne zna nihče.
Tut jetija so že vidl!
Še nim naletu na karkoli WebApliakciji podobnega, kar nebi bilo polno browser/OS/FW/timeofday-dependant for.
Proof is in the puding - izvoli narest/pokazat tako WebAplikacijo - boš mel super proofOfConcept in konec religioznih vojn Java/Net/xyz platform.
Ker bo končno kristalno jasno da nekaj pa res dela vedno/povsod. Danes nič od teh webzadev "ne dela vedno in povsod", so pa vedno krivi vsi drugi, razen tisto v čemer je zadeva narejena ne.
Aja, ne dela ti? Zamenjaj browser/verzijo jave/pythona/netFW/xyz... Opera je npr. priljubljen izgovor zakaj neka web zadeva ne dela.
Človek želi met Client aplikacijo, ki naj bi delala na nekaj sto mašinah - čistonavadna Win32 aplikacija narejena v 10let starem RAD okolju bo s tem imela še najmanj težav. Hkrati bo možno UI narest vsaj približno prijazen in odziven. Že izbira pythona je vprašljiva - na vse mašine bo potrebno zmontirat ustrezni Runtime.
in se ne rabiš ukvarjat toliko z različnimi operacijskimi sistemi.
Spet ta BS mantra.
Kolk različnih OS pa ima med svojimi ciljnimi strankami? Stavim levo jajco da točno vemo kater OS je na vseh mašinah.
Z izbiro web zadeve bo pa 100% mel neki folka na IE (na vsaj treh različnih verzijah, ki se obnašajo različno), vsaj tri različne verzije FF, ene dve verzije googlovega Chrome in še par obskurnosti.
Vse to je treba pomnožit še vsaj z tremi različnimi verzijami jave, pa vsaj dvemi različnimi nastavitvami lokalov, ki na te zadeve zelo 'zanimivo' vplivajo.
In si iz bajeslovnega problema 'različnih OS', ki v praksi ni nikakršen problem, sploh ker vsi Win sistemi laufajo vse Win zadeve, naredu praktičen problem vsaj 10ih različnih platform, kjer se bo WebZadeva obnašala na 10 različnih načinov. Ni šans da stestiraš in podpiraš vse od njih zato boš na konc obupal z "Ne dela vam? Uporabte IE", ker bo v njem stvar še najbol "predvidljvo" delala. In si skuru kup lastnih in tujih živcev za 0 profita.
Edini praktičen profit WebZadeve je implicitna distribucija najnovejše kode (recimo da kak preveč pameten caching ne dela čudinih problemov), ki pa rata hitro problematična, če maš mal 'preveč pametnega' klienta, ker je vsakič znova potrebnega kup downloada, ki ti obremenjuje webserver, ki v osnovi temu sploh ni namenjen.
Noben poseben problem ni narest autmatic update - ko maš nek repozitorij kamor porineš novo verzijo, ko jo izdaš. Aplikacija se pa od tam sama nadgradi ko je zato potreba. Po možnosti s čimmanj čaranja in pisanja po sistemu, da se to lahko zgodi brez gesel itd.
Če imate kladivo, še ni vse žebelj.
Zbogom in hvala za vse ribe
jype ::
WarpedOne> izvoli narest/pokazat tako WebAplikacijo
A Google Mail ne šteje?
WarpedOne> Kolk različnih OS pa ima med svojimi ciljnimi strankami? Stavim levo jajco da točno vemo kater OS je na vseh mašinah.
OS X?
WarpedOne> In si iz bajeslovnega problema 'različnih OS', ki v praksi ni nikakršen problem, sploh ker vsi Win sistemi laufajo vse Win zadeve, naredu praktičen problem vsaj 10ih različnih platform, kjer se bo WebZadeva obnašala na 10 različnih načinov. Ni šans da stestiraš in podpiraš vse od njih zato boš na konc obupal z "Ne dela vam? Uporabte IE", ker bo v njem stvar še najbol "predvidljvo" delala. In si skuru kup lastnih in tujih živcev za 0 profita.
Ti imaš precej drugačne izkušnje kot jaz. Videti je, da živiš skoraj 10 let v preteklosti.
A Google Mail ne šteje?
WarpedOne> Kolk različnih OS pa ima med svojimi ciljnimi strankami? Stavim levo jajco da točno vemo kater OS je na vseh mašinah.
OS X?
WarpedOne> In si iz bajeslovnega problema 'različnih OS', ki v praksi ni nikakršen problem, sploh ker vsi Win sistemi laufajo vse Win zadeve, naredu praktičen problem vsaj 10ih različnih platform, kjer se bo WebZadeva obnašala na 10 različnih načinov. Ni šans da stestiraš in podpiraš vse od njih zato boš na konc obupal z "Ne dela vam? Uporabte IE", ker bo v njem stvar še najbol "predvidljvo" delala. In si skuru kup lastnih in tujih živcev za 0 profita.
Ti imaš precej drugačne izkušnje kot jaz. Videti je, da živiš skoraj 10 let v preteklosti.
Zgodovina sprememb…
- spremenilo: jype ()
WarpedGone ::
A Google Mail ne šteje?
Je morda blizu, ampak še zdaleč ne na cilju.
OS X?
No soup for you.
Ti imaš precej drugačne izkušnje kot jaz. Videti je, da živiš skoraj 10 let v preteklosti.
Ne. Prestar sm da ne padam več na topu zrak/prazen hype.
Navijam za zadeve, ki rešijo več problemov, kot pa naredijo novih.
Avto mam zato da se peljem, ne zato ker je zelen.
Zbogom in hvala za vse ribe
hruske ::
No, nežno, WarpedOne, nežno.
Sam vzdržujem eno točno tako intranet web aplikacijo, trenutno sem na 98. verziji, centralizirana aplikacija pa mi omogoča, da lahko v nekaj minutah za vse popravim napako. Ker pa gre za interni sistem, pa tudi ni problema standardizacije na en ali dva brskalnika, tako da ta tvoj argument odpade.
Hkrati se brskalniki razvijajo v manjših skokih kot OS, tako da recimo, da ne rabiš toliko panike zganjat kot glede morebitnega drugačnega obnašanja desktop aplikacije, ko menjaš OS.
Sam vzdržujem eno točno tako intranet web aplikacijo, trenutno sem na 98. verziji, centralizirana aplikacija pa mi omogoča, da lahko v nekaj minutah za vse popravim napako. Ker pa gre za interni sistem, pa tudi ni problema standardizacije na en ali dva brskalnika, tako da ta tvoj argument odpade.
Hkrati se brskalniki razvijajo v manjših skokih kot OS, tako da recimo, da ne rabiš toliko panike zganjat kot glede morebitnega drugačnega obnašanja desktop aplikacije, ko menjaš OS.
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
Zgodovina sprememb…
- spremenilo: hruske ()
WarpedGone ::
Ja, izkoriščaš implicitni upgrade. Ta plus je močan ni pa edina možna pot preko Web principa.
Odpade predvsem argument prednosti pred "različnimi OS".
Tudi to da se brskalniki razvijajo v manjših skokih ni nujno plus. So skoki manjši jih je pa za velostni rang več in so bol pogosti. Posledično vsaketoliko kakšen mejhn upgrade polomi kako zadevo.
Kar te na konc sili v uporabo čimmanj 'naprednih' fičerjev in najmanjšega skupnega imenovalca med različimi brskalniki, kar potem še nekak stabilno deluje.
Spet - profit je? Un začetni implicitni upgrade in konec.
Če greš v smer autoupdating Win32 aplikacije imaš pa stabilno okolje, ki se praktično mnogo let ne spremeni. Ko morš kej zaflikat se to vseeno distribuira samo od sebe.
Odpade predvsem argument prednosti pred "različnimi OS".
Tudi to da se brskalniki razvijajo v manjših skokih ni nujno plus. So skoki manjši jih je pa za velostni rang več in so bol pogosti. Posledično vsaketoliko kakšen mejhn upgrade polomi kako zadevo.
Kar te na konc sili v uporabo čimmanj 'naprednih' fičerjev in najmanjšega skupnega imenovalca med različimi brskalniki, kar potem še nekak stabilno deluje.
Spet - profit je? Un začetni implicitni upgrade in konec.
Če greš v smer autoupdating Win32 aplikacije imaš pa stabilno okolje, ki se praktično mnogo let ne spremeni. Ko morš kej zaflikat se to vseeno distribuira samo od sebe.
Zbogom in hvala za vse ribe
hruske ::
WarpedOne, jaz trdim, da je čisto vseeno kateri pristop uporabiš, oba sta možni ter povsem veljavni izbiri. Nehaj s tem zdaj, ker je tema python in postgresql.
Kalkulator nove omrežnine 2024 - https://omreznina.karlas.si/Kalkulator
lopow ::
No pa smo že spet pri "NASI" :)
Kot sem že povedal, aplikacija bo oz. upam da bo takšna
- ena baza na serverju in dostop iz različnih računalnikov v omrežju podjetja.
- intštalacija programam na serverjev disk, ki je dan v skupno rabo vsem in potem samo bližnjice na desktop client računalnikov. Takšen program imamo sedaj, ki dela na takšen način. To mi je sedaj naslednja velika uganka, kako se tega lotiti, da bo to delalo.
Nima potrebe zaenkrat (po web aplikaciji), ker je takšna želja in zahteva naročnika, kot sem že povedal. Želje, zahteve, obseg in vsebina so v tem mojem projetku jasno določene. Moja je samo izvedba.
Odločil sem se pa za Qt in pythona, ker imam največ izkušenj. Delal sem že tudi stvari v PHP-ju Mysql, pa mi za to mojo aplikacijo ne pride v poštev oz. mi je rešitev s pythonom dosti bolšja.
Tisto s presledki sem rešil, prav tako sem spremenil iskanje, tako da mi sedaj ob vsakem vnosu črko gre v bazo iskat. In na hitrosti ne opazim razlike, zaenkrat. Edino ne gre mi še iksanje po številkah (v enem polju imam šifro_kupca.)
Bom pa verjetno presedlal na SQLAlchemy, ker mi je vedno bolj všeč in bolj razumljivo.
Kot sem že povedal, aplikacija bo oz. upam da bo takšna
- ena baza na serverju in dostop iz različnih računalnikov v omrežju podjetja.
- intštalacija programam na serverjev disk, ki je dan v skupno rabo vsem in potem samo bližnjice na desktop client računalnikov. Takšen program imamo sedaj, ki dela na takšen način. To mi je sedaj naslednja velika uganka, kako se tega lotiti, da bo to delalo.
Nima potrebe zaenkrat (po web aplikaciji), ker je takšna želja in zahteva naročnika, kot sem že povedal. Želje, zahteve, obseg in vsebina so v tem mojem projetku jasno določene. Moja je samo izvedba.
Odločil sem se pa za Qt in pythona, ker imam največ izkušenj. Delal sem že tudi stvari v PHP-ju Mysql, pa mi za to mojo aplikacijo ne pride v poštev oz. mi je rešitev s pythonom dosti bolšja.
Tisto s presledki sem rešil, prav tako sem spremenil iskanje, tako da mi sedaj ob vsakem vnosu črko gre v bazo iskat. In na hitrosti ne opazim razlike, zaenkrat. Edino ne gre mi še iksanje po številkah (v enem polju imam šifro_kupca.)
Bom pa verjetno presedlal na SQLAlchemy, ker mi je vedno bolj všeč in bolj razumljivo.
lopow ::
No pa sem pri novi težavi. Odločil sem se, da bom začel delati s SQLAlchemy, vendar se že na začetki naletel na verjetno smešen problem.
moj povezovalni url je (verjetno je narobe)
engine = create_engine('postgresql+psycopg2://user:pass@localhost/mojabaza')
zanima me kako naj stestiram povezavo, če dela ali ne.
Recimo probam tole
S to kodo bi naj dobil seznam tabel, vendar se pri meni nič ne zgodi.
moj povezovalni url je (verjetno je narobe)
engine = create_engine('postgresql+psycopg2://user:pass@localhost/mojabaza')
zanima me kako naj stestiram povezavo, če dela ali ne.
Recimo probam tole
metadata = MetaData() for t in metadata.sorted_tables: print (t.name)
S to kodo bi naj dobil seznam tabel, vendar se pri meni nič ne zgodi.
ZaphodBB ::
A shemo si že ustvaril z create_all()? Oziroma ali se povezuješ na obstoječo bazo ali si ustvaril novo?
lopow ::
Tako, uspelo mi je povezati tabelo. Testno sem ustvaril novo tabelo in je šlo, potem sem tudi izpisal seznam tabel. Ugotovil sem, da predno kar koli hočem delati s tabelo moram napisati;
Vendar pa se mi je sedaj pojavil še ena težava:
enostaven Select mi ne dela:
npr.:
Tako je navedeno v dokumentaciji, vendar pa dobim naslednji error:
....sqlalchemy.exc.ProgrammingError: (ProgrammingError) syntax error at or near....
upr_tip = Table('upr_tip', metadata)
Vendar pa se mi je sedaj pojavil še ena težava:
enostaven Select mi ne dela:
npr.:
s = select([upr_sm]) result = conn.execute(s) for row in result: print(row)
Tako je navedeno v dokumentaciji, vendar pa dobim naslednji error:
....sqlalchemy.exc.ProgrammingError: (ProgrammingError) syntax error at or near....
ZaphodBB ::
Jaz bi na tvojem mestu postavil SQL alchemy modele na podlagi obstoječih tabel in potem uporabljal ORM...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Postavitev mySQLOddelek: Programiranje | 2231 (1809) | M01O |
» | Pomoč pri izdelavi Python skripte (strani: 1 2 )Oddelek: Programiranje | 5816 (4462) | BigWhale |
» | Programiranje (strani: 1 2 )Oddelek: Programiranje | 10793 (9104) | steee |
» | Spletna videotekaOddelek: Programiranje | 3880 (3070) | nuclear |
» | xml dnevni uvoz v bazoOddelek: Programiranje | 1780 (1533) | keworkian |