Re: [django-cs] Hra kámen, nůžky, papír

2018-08-15 Thread Jirka Vejrazka
  Jo a mas tam preklep, "vsutp" misto "vstup"From: Jirka VejrazkaSent: Wednesday, 15 August 2018 11:37To: Tomáš RojSubject: Re: [django-cs] Hra kámen, nůžky, papír  Zrus zavorky okolo input()From: Tomáš RojSent: Wednesday, 15 August 2018 11:36To: django-csReply To: django-cs@googlegroups.comSubject: [django-cs] Hra kámen, nůžky, papírAhoj všichni,předem se omlouvám. Jsem tu nový a možná vás budu otravovat blbostmi, ale stejně mi to nedá.Napsal jsem program (nebo spíše hru) kámen nůžky papír teď. Naprogramoval jsem a zkontroloval na stránkách python.cz.. Zjistli jsem, že to mám úplně stejně, ale pořád mi hlásí stejnou chybu. Píše mi to toto: "NameError: name 'vsutp_uzivatele' is not defined". Vstup jsem definoval jako input(), takže nevím proč mi stále vypisuje tuto chybu. Chyba se vypíše u začátku podmínek.Mohl by mi prosím někdo poradit?Předem díky moc za všechny rady. Dole je ještě část kodu, kde ten problém má být.import randommozne_tahy = ["kámen", "nůžky", "papír"]vstup_uzivatele = (input("kámen, nůžky nebo papír?"))vstup_pocitac = random.choice(mozne_tahy)if vsutp_uzivatele == "kámen":if vstup_pocitac == "kámen":print("Remíza!")elif vstup_pocitac == "nůžky":print("Vyhrál jsi!")elif vstup_pocitac == "papír":print("Počítač vyhrál")



-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/7b31eb21-b505-4330-b2f2-a6f77fbf541e%40googlegroups.com.
Další možnosti najdete na https://groups.google.com/d/optout.




-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/20180815093833.6172756.72826.10065%40gmail.com.
Další možnosti najdete na https://groups.google.com/d/optout.


Re: [django-cs] Hra kámen, nůžky, papír

2018-08-15 Thread Jirka Vejrazka
  Zrus zavorky okolo input()From: Tomáš RojSent: Wednesday, 15 August 2018 11:36To: django-csReply To: django-cs@googlegroups.comSubject: [django-cs] Hra kámen, nůžky, papírAhoj všichni,předem se omlouvám. Jsem tu nový a možná vás budu otravovat blbostmi, ale stejně mi to nedá.Napsal jsem program (nebo spíše hru) kámen nůžky papír teď. Naprogramoval jsem a zkontroloval na stránkách python.cz.. Zjistli jsem, že to mám úplně stejně, ale pořád mi hlásí stejnou chybu. Píše mi to toto: "NameError: name 'vsutp_uzivatele' is not defined". Vstup jsem definoval jako input(), takže nevím proč mi stále vypisuje tuto chybu. Chyba se vypíše u začátku podmínek.Mohl by mi prosím někdo poradit?Předem díky moc za všechny rady. Dole je ještě část kodu, kde ten problém má být.import randommozne_tahy = ["kámen", "nůžky", "papír"]vstup_uzivatele = (input("kámen, nůžky nebo papír?"))vstup_pocitac = random.choice(mozne_tahy)if vsutp_uzivatele == "kámen":if vstup_pocitac == "kámen":print("Remíza!")elif vstup_pocitac == "nůžky":print("Vyhrál jsi!")elif vstup_pocitac == "papír":print("Počítač vyhrál")



-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/7b31eb21-b505-4330-b2f2-a6f77fbf541e%40googlegroups.com.
Další možnosti najdete na https://groups.google.com/d/optout.




-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/20180815093802.6172756.18175.10063%40gmail.com.
Další možnosti najdete na https://groups.google.com/d/optout.


[django-cs] Hra kámen, nůžky, papír

2018-08-15 Thread Tomáš Roj
Ahoj všichni,

předem se omlouvám. Jsem tu nový a možná vás budu otravovat blbostmi, ale 
stejně mi to nedá.
Napsal jsem program (nebo spíše hru) kámen nůžky papír teď. Naprogramoval 
jsem a zkontroloval na stránkách python.cz.. Zjistli jsem, že to mám úplně 
stejně, ale pořád mi hlásí stejnou chybu. Píše mi to toto: "NameError: name 
'vsutp_uzivatele' is not defined". Vstup jsem definoval jako input(), takže 
nevím proč mi stále vypisuje tuto chybu. Chyba se vypíše u začátku podmínek.

Mohl by mi prosím někdo poradit?
Předem díky moc za všechny rady. Dole je ještě část kodu, kde ten problém 
má být.

import random
mozne_tahy = ["kámen", "nůžky", "papír"]
vstup_uzivatele = (input("kámen, nůžky nebo papír?"))
vstup_pocitac = random.choice(mozne_tahy)


if vsutp_uzivatele == "kámen":
if vstup_pocitac == "kámen":
print("Remíza!")
elif vstup_pocitac == "nůžky":
print("Vyhrál jsi!")
elif vstup_pocitac == "papír":
print("Počítač vyhrál")

-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs 
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete 
e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/7b31eb21-b505-4330-b2f2-a6f77fbf541e%40googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.


Re: [django-cs] Django ORM

2018-08-15 Thread Petr Messner
Ahoj,

1) opravdu všichni pro výběr dat z databáze používáte Django ORM ?


já teda nejsem Djangista, ale co jsem tak vypozoroval, tak Django ORM je
základní abstrakce pro data store a business logiku, díky tomu funguje
integrace s pluginy, adminem a tak. Když vezmeš Django a odečteš ORM a
cokoliv, co na ORM nějak navazuje, tak ti zbyde Flask :) Takže potom by
vlastně Django nedávalo žádnou přidanou hodnotu a z toho bych usoudil, že
99,9% Django vývojářů bude používat ORM :)

V kontextu tohohle je psaní vlastních SQL příkazů asi něco jako programovat
v C, když můžu to samé naprogramovat v Pythonu. Ale i to je někdy potřeba.

SELECT ... ORDER BY id DESC LIMIT 1
> což je pomalejší a obecně o něco horší možnost ?


Z čeho tak usuzuješ? Nevím o ničem rychlejším, než vlézt do id indexu,
podívat se na poslední prvek (předpokládám, že ten index je seřazený), a
fetchnout záznam, na který ten poslední prvek odkazuje. Nebo aspoň to si
představuju, že SQL databáze udělá. Aspoň teda NoSQL databáze to tak dělají
:)

K debugování SQL dotazů apod. bych rád zmínil, že je fajn monitorovat
aplikaci "zvenčí" - zapnout slow log v databázi, monitorovat pomalé
requesty (např. nginx může do access logu uvádět celkovou dobu trvání
requestu). Blackbox přístup mi tady přijde obecně robustnější než whitebox.

Možná by bylo zajímavé v dev a staging prostředí uměle zvýšit latenci mezi
appkou a databází, protože každá prasárna fungovala dobře, když běžela u
vývojáře na localhostu :)

Nebo přidat do testů nějaký middleware, který bude hlídat metriky okolo SQL
dotazů.

Nevýhoda byla, že musím myslet na escapování vstupů a poté musím mapovat
> výsledné pole na entitu. Toho bych se rád z časových důvodů zbavil.


Jsi programátor. Když na něco musíš myslet, tak to znamená, že sis na to
nenapsal pomocnou funkci, nebo máš špatnou abstrakci.

Petr Messner


út 14. 8. 2018 v 10:59 odesílatel PavelZet  napsal:

> Ahoj, chci se zeptat, zda
> SELECT ... WHERE id = max(id)
> jak ji dosáhnu?
> zkoušel sem .filter(id=Max(id)), který ale použije pomalejší HAVING místo
> optimálního WHERE
> SELECT ... HAVING id = max(id)
> 4) proč všichni používají zápis .latest() (resp. .order_by(id)[:1].get()),
> který srovná celou tabulku a vybere poslední prvek formou
> SELECT ... ORDER BY id DESC LIMIT 1
> což je pomalejší a obecně o něco horší možnost ?
> 5) existuje nějaký dobrý tutoriál z pohledu SQL, kde jasně uvidím jak psát
> ORM formu, abych dosáhl konkrétního SQL ?
> 6) napíšu v ORM obecně jakkoli zamotaný SQL dotaz? nebo sou věci které
> prostě nejdou?
> 7) jsou případy na které se Django ORM vyloženě nehodí a musí se použít
> náhradní řešení ?
>
> Jsem zvyklý si optimalizované SQL dotazy psát sám. Samotný dotaz mám
> napsaný rychle.
> Nevýhoda byla, že musím myslet na escapování vstupů a poté musím mapovat
> výsledné pole na entitu. Toho bych se rád z časových důvodů zbavil.
> Na to se hodí ORM.
>
> V ORM řešení mám vše napsané rychle a funkčně, to je fajn a jeví se dobře.
> ALE poté musím dotazy ještě debugovat, googlit a editovat tak, aby vznikl
> optimální SQL dotaz, jaký si představuju. Takže časová úspora je zase tatam
> :(
>
> Díky za reakce znalých.
>
> --
> --
> E-mailová skupina django-cs@googlegroups.com
> Správa: http://groups.google.cz/group/django-cs
> ---
> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
> „django-cs“ ve Skupinách Google.
> Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny,
> zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com.
> Chcete-li tuto diskusi zobrazit na webu, navštivte
> https://groups.google.com/d/msgid/django-cs/879de872-c7c6-4aad-b00f-d9a9a58f6ae9%40googlegroups.com
> 
> .
> Další možnosti najdete na https://groups.google.com/d/optout.
>

-- 
-- 
E-mailová skupina django-cs@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs 
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete 
e-mail na adresu django-cs+unsubscr...@googlegroups.com.
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/CAK9Q5BQ_dMha5vq66WG751SEa_BRUN8J-kaPuy2UivVWXdj_Vg%40mail.gmail.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.


Re: [django-cs] Django ORM

2018-08-15 Thread starenka .
Dik, to je fajn... :)

Ad django debug toolbar: asi fajn, ale ne vzdycky mas viewcka/neco
renderujes v browseru...

-
'aknerats'[::-1]

On Wed, Aug 15, 2018, 09:58 Václav Dohnal  wrote:

> Ještě doplním, že na ladění SQL/ORM se mi osvědčil python manage.py
> shell_plus --print-sql z knihovny
> https://github.com/django-extensions/django-extensions.
>
> Dne úterý 14. srpna 2018 14:12:46 UTC+2 Vítek Pliska napsal(a):
>>
>> Já doplním že v posledním djangu je snad i explain.
>>
>> Plus za mě jen print query moc nestačí, v debug toolbaru oceňuji např
>> zobrazení duplicitních dotazů což mi říká kde mi chybí select_related, kam
>> by bylo dobré dát prefetch e explain je tam také přehledný.
>>
>> V.
>>
>> Dne út 14. 8. 2018 12:35 uživatel starenka .  napsal:
>>
>>> Ostatni byli rychlejsi, tak jen pripomenu, ze dotazy neni treba
>>> "debugovat", ale staci 'print(qs.query)'.
>>>
>>> -
>>> 'aknerats'[::-1]
>>>
>>> On Tue, Aug 14, 2018, 12:32 Jan Walter  wrote:
>>>
 Nebudu opakovat již vyřčené, jen Ti můžu říct z pohledu člověka, který
 kdysi s SQL strávil hodně času a měl ho moc rád, že Django má ORM api moc
 hezký, zvykneš si rychle, a ujetej sql jazyk už nebudeš chtít pro běžný
 situace používat. Je to mnohem čitelnější, rychlejší na použití.

 Zkus a uvidíš.

 Btw, dobře nastavený indexy, integritní omezení, konfiguraci db atp.
 potřebuješ v obou případech.

 On Tue, 14 Aug 2018, 11:59 Martin Kubát,  wrote:

> Zdravím,
>
>1. django ORM je první volba. Django je tímto úzce spjato. Bude
>určitě existovat nějaká knihovna, která umí django+SQLAlchemy, ale moc 
> bych
>na to nevsázel. To už je pak lepší flask + SQLAlchemy.
>2. nevím o tom, ORM si toto řídí dle druhu vazby
>3. viz 4.
>4. asi zalezi na db enginu, ale na postgresu SELECT ... WHERE id =
>max(id) udělat nelze. Musis group by id a pak having, a to je
>rozhodne delsi, nez order by id. Na id je standardne index.
>5. asi jo, ale nedokazu poradit
>6. nektere veci proste nejdou, resi se to
>
> https://docs.djangoproject.com/pl/2.1/topics/db/sql/#performing-raw-sql-queries,
>nebo nizkourovnove primo sql.
>7. určitě. django ORM je jednoduché, i kdyz v posledních letech
>toho umí více a více. Na SQLAlchemy ale jestě úplně nemá. Namátkou 
> nativní
>polymorfismus.
>
> Debugovat dotazy z ORM je urcite dobre a po nejake praxi se i v ramci
> ORM budou psat dotazy rychleji a spravne.
>
> Hodně zdaru.
> MK
>
>
>
> út 14. 8. 2018 v 10:59 odesílatel PavelZet  napsal:
>
>> Ahoj, chci se zeptat, zda
>>
>> 1) opravdu všichni pro výběr dat z databáze používáte Django ORM ?
>> 2) jak lze určit zda použít INNER nebo OUTER JOIN ?
>> 3) když chci vyhledat entitu s posledním ID, tak nejlepší volbou je
>> forma
>> SELECT ... WHERE id = max(id)
>> jak ji dosáhnu?
>> zkoušel sem .filter(id=Max(id)), který ale použije pomalejší HAVING
>> místo optimálního WHERE
>> SELECT ... HAVING id = max(id)
>> 4) proč všichni používají zápis .latest() (resp.
>> .order_by(id)[:1].get()), který srovná celou tabulku a vybere poslední
>> prvek formou
>> SELECT ... ORDER BY id DESC LIMIT 1
>> což je pomalejší a obecně o něco horší možnost ?
>> 5) existuje nějaký dobrý tutoriál z pohledu SQL, kde jasně uvidím jak
>> psát ORM formu, abych dosáhl konkrétního SQL ?
>> 6) napíšu v ORM obecně jakkoli zamotaný SQL dotaz? nebo sou věci
>> které prostě nejdou?
>> 7) jsou případy na které se Django ORM vyloženě nehodí a musí se
>> použít náhradní řešení ?
>>
>> Jsem zvyklý si optimalizované SQL dotazy psát sám. Samotný dotaz mám
>> napsaný rychle.
>> Nevýhoda byla, že musím myslet na escapování vstupů a poté musím
>> mapovat výsledné pole na entitu. Toho bych se rád z časových důvodů 
>> zbavil.
>> Na to se hodí ORM.
>>
>> V ORM řešení mám vše napsané rychle a funkčně, to je fajn a jeví se
>> dobře.
>> ALE poté musím dotazy ještě debugovat, googlit a editovat tak, aby
>> vznikl optimální SQL dotaz, jaký si představuju. Takže časová úspora je
>> zase tatam :(
>>
>> Díky za reakce znalých.
>>
>> --
>> --
>> E-mailová skupina djan...@googlegroups.com
>> Správa: http://groups.google.cz/group/django-cs
>> ---
>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
>> „django-cs“ ve Skupinách Google.
>> Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny,
>> zašlete e-mail na adresu django-cs+...@googlegroups.com.
>> Chcete-li tuto diskusi zobrazit na webu, navštivte
>> https://groups.google.com/d/msgid/django-cs/879de872-c7c6-4aad-b00f-d9a9a58f6ae9%40googlegroups.com
>>