Re: [Python] SqlAlchemy postgresql schemi e search_path
On 12/22/2015 06:53 PM, Manlio Perillo wrote: La cosa non può funzionare a meno di non avere una connessione dedicata per ciascun utente. A tal proposito, consiglierei di mettere in piedi pgBouncer, che serve proprio per casi come questo Enrico ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy postgresql schemi e search_path
2015-12-22 17:59 GMT+01:00 Luca: > Salve a tutti, > > Chiedo se qualcuno sa. > > Ho una situazione del genere: > > - nginx. > - uwsgi. > - djnago wsgi application. > - postgresql uno schema public e circa 170 schemi *per user*. > - sqlalchemy. > > In teoria l'idea è questa: > > - Login con schema public. > - Recupero dell'ID_SCHEMA dal record dell'utente. > - SET SEARCH_PATH con ID_SCHEMA, public; > - Resto delle query. > Ricorda che PostgreSQL è statefull, mentre HTTP è stateless. La cosa non può funzionare a meno di non avere una connessione dedicata per ciascun utente. Magari si può anche fare, ma a questo punto meglio avere 170 database usando un template di base per la creazione. > Per impostare lo schema utilizzo l'evento checkout dei *Connection Pool > Events* > @event.listens_for(Pool, 'checkout') > Che tipo di Pool usi? > Per le sessioni database di sqlalchemy utilizzo una stipida classe singleton > che usa scoped_session. > Nell'evento *checkout* uso django-crequest per recuperare le informazioni > per l'utente della request corrente. > > La cosa sembra funzionare, ma quando provo a lanciare tipo un centinaio di > client paralleli comincia a darmi degli errori, apparentemente casuali, che > vanno dal *cursor already closed* a *too many clients already* > Il primo significa che hai un *serio* problema di accesso alla connessione. Il secondo probabilmente è PostgreSQL che si lamenta (giustamente) di troppe connessioni. > Come potrei evitare questi errori o altri non ancora visti? > Sto facendo la cosa in maniera corretta? > Quanto legno potrebbe sgranocchiare una marmotta se una marmotta potesse > sgranocchiare legno? > > notte > Ciao Manlio > -- > Luca > > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] SqlAlchemy postgresql schemi e search_path
Salve a tutti, Chiedo se qualcuno sa. Ho una situazione del genere: - nginx. - uwsgi. - djnago wsgi application. - postgresql uno schema public e circa 170 schemi *per user*. - sqlalchemy. In teoria l'idea è questa: - Login con schema public. - Recupero dell'ID_SCHEMA dal record dell'utente. - SET SEARCH_PATH con ID_SCHEMA, public; - Resto delle query. Per impostare lo schema utilizzo l'evento checkout dei *Connection Pool Events* @event.listens_for(Pool, 'checkout') Per le sessioni database di sqlalchemy utilizzo una stipida classe singleton che usa scoped_session. Nell'evento *checkout* uso django-crequest per recuperare le informazioni per l'utente della request corrente. La cosa sembra funzionare, ma quando provo a lanciare tipo un centinaio di client paralleli comincia a darmi degli errori, apparentemente casuali, che vanno dal *cursor already closed* a *too many clients already* Come potrei evitare questi errori o altri non ancora visti? Sto facendo la cosa in maniera corretta? Quanto legno potrebbe sgranocchiare una marmotta se una marmotta potesse sgranocchiare legno? notte -- Luca ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy postgresql schemi e search_path
(chiedo scusa per il titolo) Il giorno 22 dicembre 2015 17:59, Lucaha scritto: > Salve a tutti, > > Chiedo se qualcuno sa. > > Ho una situazione del genere: > > - nginx. > - uwsgi. > - djnago wsgi application. > - postgresql uno schema public e circa 170 schemi *per user*. > - sqlalchemy. > > In teoria l'idea è questa: > > - Login con schema public. > - Recupero dell'ID_SCHEMA dal record dell'utente. > - SET SEARCH_PATH con ID_SCHEMA, public; > - Resto delle query. > > Per impostare lo schema utilizzo l'evento checkout dei *Connection Pool > Events* > @event.listens_for(Pool, 'checkout') > > Per le sessioni database di sqlalchemy utilizzo una stipida classe > singleton che usa scoped_session. > Nell'evento *checkout* uso django-crequest per recuperare le informazioni > per l'utente della request corrente. > > La cosa sembra funzionare, ma quando provo a lanciare tipo un centinaio di > client paralleli comincia a darmi degli errori, apparentemente casuali, che > vanno dal *cursor already closed* a *too many clients already* > > Come potrei evitare questi errori o altri non ancora visti? > Sto facendo la cosa in maniera corretta? > Quanto legno potrebbe sgranocchiare una marmotta se una marmotta potesse > sgranocchiare legno? > > notte > > -- > Luca > -- Luca ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy postgresql schemi e search_path
Il giorno 22 dicembre 2015 18:53, Manlio Perilloha scritto: > > Magari si può anche fare, ma a questo punto meglio avere 170 database > usando un template di base per la creazione. > In effetti è come funziona adesso, all'incirca, ma senza uwsgi e con tornado. > > Che tipo di Pool usi? NullPull > > > La cosa sembra funzionare, ma quando provo a lanciare tipo un centinaio > di > > client paralleli comincia a darmi degli errori, apparentemente casuali, > che > > vanno dal *cursor already closed* a *too many clients already* > > > > Il primo significa che hai un *serio* problema di accesso alla connessione. > Il secondo probabilmente è PostgreSQL che si lamenta (giustamente) di > troppe connessioni. > > Ok e questo ci sta. > > Ciao Manlio > > Ciao e grazie ancora -- Luca ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] SQLAlchemy, libro?
Mi sapete consigliare un buon libro su SQLAlchemy? Non mi trovo a mio agio con la documentazione, mi piacerebbe avere in mano qualcosa di più organico. Ho trovato Essential SQLAlchemy ma le poche recensioni dicono che è rimasto un po' indietro. -- Paolo Gatti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sqlalchemy e web framework
Grazie Marco, Per quello che devo fare Flask e' perfetto, semplice e documentato ciao, Matteo Il 17/05/2012 13:47, Marco Beri ha scritto: 2012/5/17 Matteo Boscolo matteo.bosc...@boscolini.eu mailto:matteo.bosc...@boscolini.eu Salve a tutti volevo dei consigli... dovrei visualizzare alcune tabelle di un database che ho mappato con sqlalchemy verso il web, Googolando ho trovato piramid, django, glashammer, flask, tutti che si interfacciano in qualche modo con sqlalchemy Mi sento di dire di scordarti Djanco con sqlalchemy. Django è un ottimo strumento, ma per ora (e mi sa per sempre) abbastanza dipendente dal proprio orm. Esistevano branch che miravano a usarlo con sqlalchemy ma nessuno mi pare attivo. mi sapete dare qualche consiglio che mi possa far capire cosa scegliere, quello che cerco e' la facilità di configurazione e la massima velocità per lo start up. Io direi che se devi usarlo con sqlalchemy, scegli il framework più piccolo. A occhio (e non per esperienza personale) io proverei flask. Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Sqlalchemy e web framework
Salve a tutti volevo dei consigli... dovrei visualizzare alcune tabelle di un database che ho mappato con sqlalchemy verso il web, Googolando ho trovato piramid, django, glashammer, flask, tutti che si interfacciano in qualche modo con sqlalchemy mi sapete dare qualche consiglio che mi possa far capire cosa scegliere, quello che cerco e' la facilità di configurazione e la massima velocità per lo start up. grazie mille ciao, Matteo. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Sqlalchemy e web framework
2012/5/17 Matteo Boscolo matteo.bosc...@boscolini.eu Salve a tutti volevo dei consigli... dovrei visualizzare alcune tabelle di un database che ho mappato con sqlalchemy verso il web, Googolando ho trovato piramid, django, glashammer, flask, tutti che si interfacciano in qualche modo con sqlalchemy Mi sento di dire di scordarti Djanco con sqlalchemy. Django è un ottimo strumento, ma per ora (e mi sa per sempre) abbastanza dipendente dal proprio orm. Esistevano branch che miravano a usarlo con sqlalchemy ma nessuno mi pare attivo. mi sapete dare qualche consiglio che mi possa far capire cosa scegliere, quello che cerco e' la facilità di configurazione e la massima velocità per lo start up. Io direi che se devi usarlo con sqlalchemy, scegli il framework più piccolo. A occhio (e non per esperienza personale) io proverei flask. Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] SqlAlchemy
Buongiorno a tutti, nel lavoro con python faccio largo uso di database (tra MySQL, MSAccess, AS400 e sqlite). Cercando sul web mi sono imbattuto in SqlAlchemy Prima di spendere del tempo nell'imparare questo modulo volevo sapere se qualcuno di voi lo utilizza e quali possono essere i vantaggi di usarlo al posto delle istruzioni SQL. Perchè modificare le istruzioni SQL in metodi di un oggetto? Scusa se vi sembra una banalità ma non lo comprendo: forse rendere indipendente dal sistema di database lo script/progetto? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy
Scusa se vi sembra una banalità ma non lo comprendo: forse rendere indipendente dal sistema di database lo script/progetto? E' esattamente questo lo scopo. Non a caso in franework come TurboGears 2.0 viene utilizzato per rendere possibile la gestione di un sito/webapp scalabile. Io la scrivo ad esempio usando Sqlite per lo sviluppo e poi l'applicativo in produzione usera' ad esempio Oracle. Devo solo cambiare una riga in un file di config (posto che il Db Schema sia lo stesso). Lo svantaggio e' nella impossibilita' (o meglio la difficolta' relativa) di utilizzare cose come trigger e stored procedure. Si puo' fare ma usando delle istruzioni rawsql che rendono di fattto non piu' portabile as is la cosa (le parti rawsql in caso di cambio di db vanno adattate allo specifico dialetto sql). Cio' detto, la comodita' di avere la persistenza dei dati avendo mappato ad oggetti un relazionale a mio modesto parere valgono il fatto di non usare stored e trigger. Tieni presente che di solito vengono usati, questi strumenti, per automatizzare dei compiti complessi, ma in python e con sqlalchemy fare le stesse cose richiede uno sforzo cosi' basso che fa pendere il piatto della bilancia dal lato python/sqlalchemy. Aggiungo per correttezza che io non ho mai amato troppo le SP. Greetings JOKER Ltd. -- Ho guardato in alto, oltre le insegne illuminate e, obliqua su un grattacielo, c'era la luna. Le ho detto: Cosa ci fa una ragazza come te in un posto come questo? (*Stefano Benni* - Baol ) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy
Grazie Carlos, allora penso che spenderò del tempo per comprendere meglio questo modulo... Vediamo dove mi porterà :-) Il giorno 10 gennaio 2011 15:18, Carlos Catucci carlos.catu...@gmail.comha scritto: Scusa se vi sembra una banalità ma non lo comprendo: forse rendere indipendente dal sistema di database lo script/progetto? E' esattamente questo lo scopo. Non a caso in franework come TurboGears 2.0 viene utilizzato per rendere possibile la gestione di un sito/webapp scalabile. Io la scrivo ad esempio usando Sqlite per lo sviluppo e poi l'applicativo in produzione usera' ad esempio Oracle. Devo solo cambiare una riga in un file di config (posto che il Db Schema sia lo stesso). Lo svantaggio e' nella impossibilita' (o meglio la difficolta' relativa) di utilizzare cose come trigger e stored procedure. Si puo' fare ma usando delle istruzioni rawsql che rendono di fattto non piu' portabile as is la cosa (le parti rawsql in caso di cambio di db vanno adattate allo specifico dialetto sql). Cio' detto, la comodita' di avere la persistenza dei dati avendo mappato ad oggetti un relazionale a mio modesto parere valgono il fatto di non usare stored e trigger. Tieni presente che di solito vengono usati, questi strumenti, per automatizzare dei compiti complessi, ma in python e con sqlalchemy fare le stesse cose richiede uno sforzo cosi' basso che fa pendere il piatto della bilancia dal lato python/sqlalchemy. Aggiungo per correttezza che io non ho mai amato troppo le SP. Greetings JOKER Ltd. -- Ho guardato in alto, oltre le insegne illuminate e, obliqua su un grattacielo, c'era la luna. Le ho detto: Cosa ci fa una ragazza come te in un posto come questo? (*Stefano Benni* - Baol ) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SqlAlchemy
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Il 10/01/2011 15:18, Carlos Catucci ha scritto: Scusa se vi sembra una banalità ma non lo comprendo: forse rendere indipendente dal sistema di database lo script/progetto? [...] Lo svantaggio e' nella impossibilita' (o meglio la difficolta' relativa) di utilizzare cose come trigger e stored procedure. Per cose come i Trigger non ci sono troppe difficoltà, dato che le ultime versioni di SQLAlchemy mettono a disposizione DDLElement: http://www.sqlalchemy.org/docs/core/compiler.html Ciao Manlio -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk0rGM0ACgkQscQJ24LbaUTgkQCfZ9I4yIDoaa3RtjtYxVaYUq93 ZW8Ani38mpxkKwb2wY51RC3gHdcsZg2T =to/j -END PGP SIGNATURE- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] sqlalchemy e relazioni.
Qualche idea? Grazie in anticipo e scusate il disturbo... Intanto... qual è il problema con la ML di sqlalchemy? E' un semplice Google Group, non è che stai provando ad usare quella vecchia di sourceforge? Poi... davvero non ci ho capito molto della tua descrizione. Potresti postare i dati delle tabelle mappate da sqlalchemy, gli oggetti mappati e un esempio riproducibile di dove avviene l'errore? Se proprio non puoi postare quel codice, prova a riprodurre l'errore 'in piccolo ' creandoti un mini-file di test che faccia più o meno le stesse cose, e postalo. Indica anche quale OS, quale versione di Python, sqlalchemy, quale db-adapter e quale DB stai utilizzando! Ciao! -- Alan Franzoni [EMAIL PROTECTED] - GPG Key Fingerprint: 5C77 9DC3 BD5B 3A28 E7BC 921A 0255 42AA FE06 8F3E ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] sqlalchemy e relazioni.
Scusate se disturbo ancora qui, ma (che nervoso) la ml di sqlalchemy proprio non riesco a farla andare! Quindi chiedo venia in anticipo, e chiedo anche se qualcuno può illuminarmi. Ho il seguente errore: sqlalchemy.exceptions.ArgumentError: Error determining primary and/or secondary join for relationship 'righe' between mappers 'Mapper|datadef|cancella_unomolti01' and 'Mapper|datadef|cancella_unomolti01_righe'. If the underlying error cannot be corrected, you should specify the 'primaryjoin' (and 'secondaryjoin', if there is an association table present) keyword arguments to the relation() function (or for backrefs, by specifying the backref using the backref() function with keyword arguments) to explicitly specify the join conditions. Nested error is Table 'None.cancella_unomolti01' not defined due mapper e relative tabelle incapsulati in due oggetti. Ciascuno ha il suo mapper, la tabella molti ha la sua definizione ForeignKey('cancella_unomolti01.progressivo'), il mapper relativo al lato uno ha: cls.mapper.add_property('righe', relation(self.righe_proxy.mapper) ) Non capisco da dove arrivi quel None ('None.cancella_unomolti01') nella segnalazione Nested error. Qualche idea? Grazie in anticipo e scusate il disturbo... max ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SQLAlchemy: insert o update
Marco Mariani ha scritto: [...] Se la pk non esiste? Non ti capita mai di inserire una riga... conoscendo prima la chiave primaria? Non so se ho capito bene la domanda... se la pk non esiste si tratta di un insert, ovviamente. Che è la situazione standard che ho istanziando un nuovo oggetto, associandolo alla sessione con session.save(obj) e poi scrivendolo nel dbms con .flush(). Il mio problema è che se creo un nuovo oggetto e poi inserisco valori di pk corrispondenti ad un record già esistente non ho trovato nessun modo per fare l'update su disco (con .flush()), mi fa sempre solo insert e quindi ho un'eccezione... Lo chiedo perche' a me succede sempre. Non ho capito bene cosa intendi... Forse questo ti puo' essere utile http://www.sqlalchemy.org/docs/unitofwork.myt save_or_update() Ti ringrazio della segnalazione, avevo già guardato sia update che save_or_update ma fanno una cosa un po' diversa. In pratica, se non ho capito erroneamente (ma i risultati confermano la descrizione che sto per fare...) save dice alla sessione di tracciare un certo oggetto. Update dice alla sessione di riprendere in carico un oggetto che era stato lasciato (traduzione impropria di transient or detached, senza sessione insomma...). Il problema mio è successivo, perchè è in fase di .flush() che non distingue tra insert o update (intendo a livello sql, a questo punto). Ho ben presente che ci sono in caso di update una serie di problemi di conflitto e gestione dei lock, ma io vorrei semplicemente poter forzare un update... Tu riesci a fare un oggetto nuovo, agganciarlo alla sessione (con .save() o con save_or_update() come vuoi...) e scriverlo su disco con .flush() indipendentemente dal fatto la sua pk esista o meno nei record del dbms? Grazie, Max. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SQLAlchemy su ubuntu...
Il giorno mer, 07/02/2007 alle 11.26 +0100, [EMAIL PROTECTED] ha scritto: Marco Mariani ha scritto: [...] In alternativa, scarichi il tar e prendi la directory, e' 100% python Ti ringrazio, in effetti per farlo andare ci sono riuscito comunqe, era solo che mi interrogavo sul fatto di aver compreso o meno il senso di easy_install... (forse il subject doveva essere più easy_install di sqlalchemy, ma stavo sbattendo il naso su quello...) anche secondo me easy_install non è questo granche', io per esempio dovevo installare mechanize su una debian sarge, non ce' stato verso di farlo andare. Ho dovuto prendere i relativi file da ubuntu (che ha il deb di mechanize) e metterli in sarge. Ad ogni modo grazie, Max. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] SQLAlchemy: insert o update
Scusate se faccio una domanda banale. Usando l'orm di sqlalchemy qualcuno mi saprebbe dare un suggerimento su come risolvere il problema di fargli fare automaticamente un inserimento o un aggiornamento? Mi spiego meglio: Creo tabelle e oggetti, legati dal mapper. Ho la mia brava sessione. Se creo un nuovo oggetto, poi lo salvo (una cosa tipo session.save(obj)) e poi faccio il .flush() va tutto bene se il nuovo oggetto non è presente nel dbms (ovvero ho messo una pk realmente nuova) mentre se la pk è già esistente mi segnala un conflitto (giusto, in quel caso dovrei chiedere un update e non un insert). Ovviamente se leggo un oggetto (già esistente) tramite query, lo modifico e faccio il .flush() ottengo correttamente un update. La domanda è semplice: esiste un modo per non dover prestabilire se si sta lavorando su un oggetto nuovo piuttosto che su uno esistente? Mi andrebbe bene una cosa tipo: se la pk non esiste esegui INSERT, altrimenti UPDATE. Se gli oggetti sono nuovi e non caricati da query mi propone sempre e solo insert... Grazie in anticipo dei suggerimenti, Massimo. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SQLAlchemy su ubuntu...
Ti conviene crearti un pacchetto .deb sfruttando il sistema pycentral o python-support. In questo modo non avrai il problema di eventuali file dispersi sul disco fisso e avrai in automatico la stessa versione installata su tutti gli interpreti disponibili sul sistema. -- Alan Franzoni [EMAIL PROTECTED] - GPG Key Fingerprint: 5C77 9DC3 BD5B 3A28 E7BC 921A 0255 42AA FE06 8F3E ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] SQLAlchemy su ubuntu...
[EMAIL PROTECTED] wrote: Ok, mi sa che non è la versione giusta di SQLite, ci lavorerò un po' sopra. Ma easy_install non doveva fare tutto da solo? Qualcuno ha provato SQLAlchemy su Dapper riscontrando la mia situazione, o mi sfugge qualcosa di banale? Io l'ho usato su dapper e su edgy, con mysql e postgres, nelle versioni egg e trunk svn In alternativa, scarichi il tar e prendi la directory, e' 100% python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python