Re: [python] par dotazu od zacatecnika v SQL

2018-01-01 Tema obsahu Vláďa Macek
Podle mě jsme téma popsali tak, že původní tazatel si z toho může něco odnést.

A jako jeden z diskutujících jsem moc rád, že se debata nepropadla do
osobna. Zůstalo to u výměny názorů, zkušeností a argumentace.

Všichni víme, jak je jinak jednoduché podlehnout vlastní prchlivosti či egu
-- bez ohledu na to, jestli mám "pravdu" nebo ne. (A mýlit se schválně není
možné.)

Jsem moc rád za tuto společnost a ať nám zůstane co nejvíc takových "kruhů"
kolem nás.

Mějte se všichni fajn!

V.

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-30 Tema obsahu Petr Mach
Já jsem za staré školy a jsem toho názoru, že kdo chce používat relační
databáze, měl by znát a chápat SQL. Základy jsou velmi jednoduché. Umožní
mu to pochopit smysl řelačních databáží, na co jsou dobré a na co se
nehodí. Bez znalosti SQL je to imho nemožné. SQL k RDB nabízí správnou
abstrakci na rozdíl od ORM.

Nesouhlasím s příměrem k Pythonu a ASM. Je to logicky nesprávné, protože
ASM se k Pythonu nemá stejně jako SQL k relačním databázím. Já mám lepší
příměr, SQL se k RDB má stejně jako matematiká k fyzice. A kdo chce dělat
fyziku, měl by umět alespoň základy matematiky. Hodně se mu to usnadní.



Dne 29. 12. 2017 21:52 napsal uživatel "zu1234" :

>
> Dne 29.12.2017 v 10:29 Dan Pressl napsal(a):
>
>> Myslím že se dostáváme přesně do té fáze, kdy člověk, který poslal dotaz
>> na jednoduchý problém, má chuť zaklapnout notebook a jít ven, protože jeho
>> původní otázka se zvrhla.
>>
> Ad tazatel: Kdo se bojí nesmí do lesa :-)
> Ad problém: Netvrdím že moje praxe je jediná pravda pro všechny.
>
> Přeji hezký nový rok!
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-29 Tema obsahu zu1234


Dne 29.12.2017 v 10:29 Dan Pressl napsal(a):
Myslím že se dostáváme přesně do té fáze, kdy člověk, který poslal 
dotaz na jednoduchý problém, má chuť zaklapnout notebook a jít ven, 
protože jeho původní otázka se zvrhla.

Ad tazatel: Kdo se bojí nesmí do lesa :-)
Ad problém: Netvrdím že moje praxe je jediná pravda pro všechny.

Přeji hezký nový rok!
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-29 Tema obsahu Jan Bednařík
Myslím si, že doporučovat někomu, kdo chce používat databázi, čisté SQL,
aby zjistil jak to uvnitř databáze funguje, je stejné, jako doporučovat
někomu, kdo se učí programovat v Pythonu, aby začal s Assemblerem a C, aby
zjistil, jak ten počítač funguje.


2017-12-29 9:52 GMT+01:00 zu1234 :

>
> Dne 28.12.2017 v 22:19 Petr Blahos napsal(a):
>
>
>> Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM. Doporučil
>> bych SQLAlchemy ORM nebo Django (pokud chceš dělat webové aplikace). Na
>> drtivou většinu věcí ti to bude stačit. Jazyk SQL je pro běžné potřeby
>> zbytečně nízkoúrovňový. Psát, testovat a udržovat kód se syrovým SQL je
>> velká ztráta času.
>>
>>
> :-) To je o úhlu pohledu. Aby člověk věděl, co v databázi vůbec lze
> efektivně udělat, musí
> chápat ten relační způsob myšlení, a obávám se, že ORM jej od toho spíš
> může odvést.
> Navíc když nebude mít python, bude mít pořád to SQL, které asi bude volat
> z jakéhokoliv
> jazyka, nebo možná někdy dokonce přímo. A nebude se divit, co je to ten
> select, protože
> v sqlalchemy ORM se přece píše query...
>
> Ano, přidám par dalších otázek:
> Dejme tomu že začnu 'bez SQL'. Vyvíjím program, mám v něm chyby, které
> dělají chyby v databázi.
>

Od toho tě chrání to ORM (stabilní, testované). Musel bys asi narazit na
bug přímo v ORM knihovně, aby ses do takové situace dostal. Oproti tomu se
syrovým SQL se do takové situace dostaneš snadno.


> Pokud se vyhnu SQL, jak budu schopen zkontrolovat svoje data?
>

Cest je spousta. Základ jsou testy (ale to i v případě použití SQL). ORM
lze obvykle používat v shellu, tak se dá databáze pohodlně prohlížet. A
obvykle se hodí mít po ruce nějaké GUI k databázi.


> Opravit v datech následky mých chyb nebo chyb uživatele?
>

ORM ti obvykle nedovolí takové chyby udělat.


> Změnit strukturu dat z důvodu změny koncepce?
>

ORM knihovny mají nástroje pro tvorbu databázových migrací. Obvykle umí
migrace pro většinu změn struktury vygenerovat automaticky, což se hodí,
protože je to věc, kde se dá nasekat spousta tragických chyb.


> Program zastírá realitu která je v databázi.
>
> A jiná otázka trochu bokem: je správné/vhodné vnutit zákazníkovi
> databázovou platformu?
> Pokud byste to chtěli prodávat, tak zákazník může mít své preference.
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-29 Tema obsahu Dan Pressl
Myslím že se dostáváme přesně do té fáze, kdy člověk, který poslal dotaz na
jednoduchý problém, má chuť zaklapnout notebook a jít ven, protože jeho
původní otázka se zvrhla.

Pokud někdo začíná a chce nabrat zkušenosti, je daleko lepší aby začal na
ORM. S ORM postaví malé projekty daleko rychleji a paradoxně i stabilněji
než s použitím čístého SQL a bud se mu se vším pracovat daleko líp. Zároveň
pokud si budet hledat práci, tak málokterý startup či větší firma nepoužívá
ORM ať jako Django ORM nebo SQLAlchemy, takže bude mít výhodu, protože bude
na daný způsob práce zvyklý. Až bude muset řešit výkonostní problém, tak se
naučí SQL, jak fungují transakce, jak se chová JOIN apod. a hezky se mu to
propojí dohromady.

Pokud budou chyby v databázi, tak se k nim dostane stejně jako kdyby uměl
psát query v SQL. Nastavuje se někde, že je uživatel neaktivní? Problém
stejně bude hledat v kódu. Jiný datový typ, než jaký je ve schématu, stejně
neuloží. Opravit chyby? Napíše si skript, který bude používat SQLAlchemy a
data si opraví. Až to bude potřebovat udělat efektivněji, tak začne
zjišťovat, jak to udělat přímo v SQL atd.. ORM nezastírá realitu v
databázi, pouze nabízí alternativní způsob práce s daty v databázi. A proč
tady řešíme nucení technologie zákazníkovi? Rovnou můžeme začít řešit, co
dělat, když zákazník řekne, že chce Javu. Jedná se o problémy, které se
řeší projekt od projektu.

Podle toho, co tady čtu, by měl půl roku studovat jak funguje SQL a pak
teprve začít něco psát. To, dle mého, není vhodný přístup, protože je
daleko lepší začít něco tvořit a učit se za pochodu. Takže za mě, ať začne
s ORM, kde nejlepší volba je SQLAlchemy a učí se během tvorby svého
projektu. A sám časem přijde na to, jestli mu to tak vyhovuje nebo chce
zjistit, jak to doopravdy funguje a vyplatí se mu psát čisté SQL.

Kdo z vás napřed studuje protokol, přes který komunikuje ovladač s televizí
a až se ho naučí, začne ovladač používat?

2017-12-29 9:52 GMT+01:00 zu1234 :

>
> Dne 28.12.2017 v 22:19 Petr Blahos napsal(a):
>
>
>> Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM. Doporučil
>> bych SQLAlchemy ORM nebo Django (pokud chceš dělat webové aplikace). Na
>> drtivou většinu věcí ti to bude stačit. Jazyk SQL je pro běžné potřeby
>> zbytečně nízkoúrovňový. Psát, testovat a udržovat kód se syrovým SQL je
>> velká ztráta času.
>>
>>
> :-) To je o úhlu pohledu. Aby člověk věděl, co v databázi vůbec lze
> efektivně udělat, musí
> chápat ten relační způsob myšlení, a obávám se, že ORM jej od toho spíš
> může odvést.
> Navíc když nebude mít python, bude mít pořád to SQL, které asi bude volat
> z jakéhokoliv
> jazyka, nebo možná někdy dokonce přímo. A nebude se divit, co je to ten
> select, protože
> v sqlalchemy ORM se přece píše query...
>
> Ano, přidám par dalších otázek:
> Dejme tomu že začnu 'bez SQL'. Vyvíjím program, mám v něm chyby, které
> dělají chyby v databázi.
> Pokud se vyhnu SQL, jak budu schopen zkontrolovat svoje data?
> Opravit v datech následky mých chyb nebo chyb uživatele?
> Změnit strukturu dat z důvodu změny koncepce?
> Program zastírá realitu která je v databázi.
>
> A jiná otázka trochu bokem: je správné/vhodné vnutit zákazníkovi
> databázovou platformu?
> Pokud byste to chtěli prodávat, tak zákazník může mít své preference.
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
>


-- 
^nu.friX
aka Dan Pressl
Every syntax creates code. And code is poetry.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-29 Tema obsahu Petr Blahos
>
>
> A jiná otázka trochu bokem: je správné/vhodné vnutit zákazníkovi
> databázovou platformu?
> Pokud byste to chtěli prodávat, tak zákazník může mít své preference.
>
> A tak zase je rozdíl mezi správné a realita. Správné je jistě nenutit,
realita je taková,
že v lepším případě dá dodavatel na výběr mezi 2-3 RDBMS, jindy řekne
(ovšem až
po realizaci obchodu): jestli chcete těchto pár vlastností, bude to muset
být Oracle.

Paradoxně, pokud jsi malý, budeš se snažit udělat to podle přání zákazníka,
pokud
jsi velký, bude se zákazník muset přizpůsobit,

Petr
--
http://petr.blahos.com/
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-29 Tema obsahu zu1234


Dne 28.12.2017 v 22:19 Petr Blahos napsal(a):



Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM.
Doporučil bych SQLAlchemy ORM nebo Django (pokud chceš dělat
webové aplikace). Na drtivou většinu věcí ti to bude stačit. Jazyk
SQL je pro běžné potřeby zbytečně nízkoúrovňový. Psát, testovat a
udržovat kód se syrovým SQL je velká ztráta času.


:-) To je o úhlu pohledu. Aby člověk věděl, co v databázi vůbec lze 
efektivně udělat, musí
chápat ten relační způsob myšlení, a obávám se, že ORM jej od toho 
spíš může odvést.
Navíc když nebude mít python, bude mít pořád to SQL, které asi bude 
volat z jakéhokoliv
jazyka, nebo možná někdy dokonce přímo. A nebude se divit, co je to 
ten select, protože

v sqlalchemy ORM se přece píše query...


Ano, přidám par dalších otázek:
Dejme tomu že začnu 'bez SQL'. Vyvíjím program, mám v něm chyby, které 
dělají chyby v databázi.

Pokud se vyhnu SQL, jak budu schopen zkontrolovat svoje data?
Opravit v datech následky mých chyb nebo chyb uživatele?
Změnit strukturu dat z důvodu změny koncepce?
Program zastírá realitu která je v databázi.

A jiná otázka trochu bokem: je správné/vhodné vnutit zákazníkovi 
databázovou platformu?

Pokud byste to chtěli prodávat, tak zákazník může mít své preference.
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-28 Tema obsahu Petr Messner
Ad MySQL vs PostgreSQL - záleží na use case. Pro 99 % programátorů možná
bude PostgreSQL lepší po všech stránkách, ale třeba v Seznam.cz nebo
Facebooku to mohou oprávněně vidět jinak.

https://eng.uber.com/mysql-migration/
https://ayende.com/blog/175137/re-why-uber-engineering-switched-from-postgres-to-mysql
https://code.facebook.com/posts/190251048047090/myrocks-a-space-and-write-optimized-mysql-database/

Můj osobní komentář:

- PostgreSQL staví na nějakých předpokladech, jak by to ideálně mělo
fungovat, např. že kešování nebo kompresi má řešit operační systém a ne
databáze. Bohužel zas tak růžové to ale v praxi není :)
- rozdílný přístup k replikaci
- MySQL je zdá se taková víc/snadněji "hackable" - opět něco, co 99 % lidí
nevyužije, ale někdo ano
- i ten hloupý MyISAM, kterému byste se měli vyhnout, pokud má MySQL
fungovat jako "databáze", je někdy super, pokud místo "databáze"
potřebujete spíš "storage"
- a i kdyby obě databáze měly všechny metriky stejné, tak zahodit roky
zkušeností s produkčním provozem jedné databáze a jen tak ze srandy
přehodit terabajty/petabajty dat do jiné databáze asi taky není úplně ono

Nicméně co z toho je relevantní pro začátečníka :)

Ještě pár poznámek k ostatním příspěvkům:

- jestli MySQL není dost ACID, tak asi máte špatně nastavený isolation
level - "serializable" není výchozím nastavením. Což ostatně platí i pro
PostgreSQL.
- někdo tu zmiňoval, že je sqlite díky možnosti běžet z RAM vhodná na
testy; no a je snad problém si pro testy spustit v ramdisku (tmpfs) i tu
PostgreSQL/MySQL? :)
- někoho, kdo nezná základy SQL (tak, že typické use cases není schopen
vyjádřit v SQL), bych asi ani nepovažoval za programátora, leda hodně hodně
juniorního (nebo nějakého "Django ninju"). I na těch horších školách se
aspoň nějaké SQL učí.
- na druhou stranu SQL není zas tak úplně triviální, když se to má člověk
naučit rozumně, tak na VŠ je to celý předmět minimálně na jeden semestr.
- kéž by všechny softwarové projekty byly alespoň tak dobře otestované jako
SQLite :) https://www.sqlite.org/testing.html

A pár poznámek mimo :) Aneb není vše jen o MySQL a PostgreSQL.

- třeba SQL databáze ani není potřeba :) Alternativ je spousta, od Redisu
přes MongoDB a ElasticSearch až po nějaké Cassandry a HBase, speciality
typu Druid.io a kdoví co ještě. Některé z nich je možné číst i přes SQL
dotazy. Dneska už i AWS S3 má pseudo-SQL rozhraní.
- pak jsou cloudové databáze (včetně "serverless"), některé z nich mohou
fungovat i jako drop-in náhrada PostgreSQL nebo MySQL.
- my třeba v práci používáme primárně MongoDB a SQL nám nějak nechybí :) Na
jednu stranu člověk musí trochu vědět, co dělá (částečné povědomí o
distribuovaných systémech dost pomůže), na druhou stranu právě všechny
tyhle blbosti typu MySQL vs. PostgreSQL a SQL vs. ORM nemusím řešit :) A k
tomu mám zadarmo mnohem lepší API a provozní i výkonostní charakteristiky.
A kdyby mi nějak extra scházelo SQL pro nějakou analytiku a reportování,
tak možnosti, jak to řešit, jsou. MongoDB je už třeba docela klasika v
node.js světě.

PM


Dne 28. prosince 2017 8:51 starenka .  napsal(a):

> >> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Muzu se zeptat v cem?
> -
> 'aknerats'[::-1]
>
> On Dec 28, 2017 00:22, "Daniel Milde"  wrote:
>
> Já bych ještě dodal, že ani Mysql/MariaDB/PerconaDB není žádná hračka :)
>
> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Jinak k dotazu tazatele: z konektorů bych doporučil PyMysql a na
> samotnou tvorbu dotazů buď:
>
> 1) SQLAlchemy pokud budeš dělat v aplikaci i zápisy a většinu času budeš
> potřebovat data celých entit/modelů.
>
> nebo
>
> 2) SqlPuzzle pokud se budeš jen dotazovat a budeš potřebovat hodně
> specifické dotazy, které je vhodné psát v něčem víc blízkém SQL.
>
> Dan
>
>
> Dne 27.12.2017 v 13:50 Matěj Cepl napsal(a):
> > On 2017-12-27, 11:33 GMT, zu1234 wrote:
> >> Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
> >> Vyhnul bych se SQLAlchemy a ORM.
> >> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
> > Souhlas, pro začátečníky bych doporučil
> > https://docs.python.org/2.7/library/sqlite3.html a pak k tomu
> > nějaký opravdový kurs SQL (když dáte do svého oblíbeného
> > vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro
> > SQLite podporuje většina databázových konektorů pro Python a pro
> > začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat
> > nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo
> > MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný
> > začátek počkat.
> >
> > SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se
> > podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše
> > laik).
> >
> > Matěj
>
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-28 Tema obsahu Petr Blahos
>
>
> Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM. Doporučil
> bych SQLAlchemy ORM nebo Django (pokud chceš dělat webové aplikace). Na
> drtivou většinu věcí ti to bude stačit. Jazyk SQL je pro běžné potřeby
> zbytečně nízkoúrovňový. Psát, testovat a udržovat kód se syrovým SQL je
> velká ztráta času.
>
>
:-) To je o úhlu pohledu. Aby člověk věděl, co v databázi vůbec lze
efektivně udělat, musí
chápat ten relační způsob myšlení, a obávám se, že ORM jej od toho spíš
může odvést.
Navíc když nebude mít python, bude mít pořád to SQL, které asi bude volat z
jakéhokoliv
jazyka, nebo možná někdy dokonce přímo. A nebude se divit, co je to ten
select, protože
v sqlalchemy ORM se přece píše query...

Tak nic. Půjdu spát...
--
Petr
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-28 Tema obsahu Daniel Milde
Nesleduju moc vývoj Postgresu, takže nevím co přesně už vyřešili (a
hádám, že většinu už ano),
ale ještě donedávna byla MySQL rychlejší v některých dotazech a měla
lepší replikaci.

Dan


Dne 28.12.2017 v 08:51 starenka . napsal(a):
> >> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Muzu se zeptat v cem?
> -
> 'aknerats'[::-1]
>
> On Dec 28, 2017 00:22, "Daniel Milde"  > wrote:
>
> Já bych ještě dodal, že ani Mysql/MariaDB/PerconaDB není žádná
> hračka :)
>
> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
> stále překonává třeba ten Postres.
>
> Jinak k dotazu tazatele: z konektorů bych doporučil PyMysql a na
> samotnou tvorbu dotazů buď:
>
> 1) SQLAlchemy pokud budeš dělat v aplikaci i zápisy a většinu času
> budeš
> potřebovat data celých entit/modelů.
>
> nebo
>
> 2) SqlPuzzle pokud se budeš jen dotazovat a budeš potřebovat hodně
> specifické dotazy, které je vhodné psát v něčem víc blízkém SQL.
>
> Dan
>
>
> Dne 27.12.2017 v 13:50 Matěj Cepl napsal(a):
> > On 2017-12-27, 11:33 GMT, zu1234 wrote:
> >> Jsem stará konzerva a myslím si že začátečník by měl začínat
> jednoduše.
> >> Vyhnul bych se SQLAlchemy a ORM.
> >> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
> > Souhlas, pro začátečníky bych doporučil
> > https://docs.python.org/2.7/library/sqlite3.html
>  a pak k tomu
> > nějaký opravdový kurs SQL (když dáte do svého oblíbeného
> > vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro
> > SQLite podporuje většina databázových konektorů pro Python a pro
> > začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat
> > nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo
> > MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný
> > začátek počkat.
> >
> > SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se
> > podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše
> > laik).
> >
> > Matěj
>
>
> ___
> Python mailing list
> python@py.cz 
> http://www.py.cz/mailman/listinfo/python
> 
>
> Visit: http://www.py.cz
>
>
>
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-28 Tema obsahu Dan Pressl
Tak pod Honzův email se klidně podepíšu. Učit se čisté SQL je zbytečné do
doby, kdy se začne řešit výkon. A kód je s SQLAlchemy snadno udržitelný,
což dnes bývá daleko důležitější než čistý výkon.

On Dec 28, 2017 5:57 PM, "Jan Bednařík"  wrote:

> Ahoj,
>
> Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM. Doporučil
> bych SQLAlchemy ORM nebo Django (pokud chceš dělat webové aplikace). Na
> drtivou většinu věcí ti to bude stačit. Jazyk SQL je pro běžné potřeby
> zbytečně nízkoúrovňový. Psát, testovat a udržovat kód se syrovým SQL je
> velká ztráta času.
>
> Záleží na projektu, ale když už náhodou budeš potřebovat něco, s čím si
> tyhle ORM efektivně neporadí, tak to bude vyjímečná situace. V takových
> situacích si většinou poradíš tím, že budeš trochu študovat manuály a
> googlit, a zjistíš, že to často taky jde efektivně i s ORM. A když ne, tak
> data vytaháš a zpracuješ je v Pythonním kódu. A když dat bude moc, a tohle
> efektivně taky nepůjde, tak se naučíš pracovat s SQLAlchemy Core nebo
> nastuduješ trochu toho syrového SQL.
>
> Co se týče databáze, MySQL/MariaDB bych se vyhnul obloukem. Není ACID
> (ačkoliv se tím pyšní), autocommituje změny schématu i během transakcí (cca
> 10 let stále neopravený a zřejmě neopravitelný bug). Při běžném použití tě
> to nepotrápí. Ale jakmile se projekt rozjede a začneš dělat migrace
> schematu a dat, tak tě to dřív nebo později pěkně vyjebe. Stalo se mi to v
> životě asi třikrát, z toho dvakrát na nových projektech, kdy jsme MySQL
> dali "ještě jednu šanci" protože PostgreSQL nebyla z nějakého důvodu
> jednoduše k dispozici. S ORM můžeš opustit MySQL/MariaDB relativně snadno,
> ale proč s ní vůbec začínat, když je tam (krom jiných neduhů) taková past?!
>
> Doporučil bych PostgreSQL. S tou se nedá šlápnout vedle pro jakýkoliv
> projekt. Má i zajímavé "NoSQL" fičury, jako datové typy JSON a hstore,
> které stojí za pozornost.
>
> SQLite může být taky dobrá volba, ale záleží na projektu. Její super
> fičura je snadno použitelná databáze v RAMce, což se hodí hlavně pro testy.
>
> Honza
>
>
> 2017-12-25 11:41 GMT+01:00 Lubomir Vogl :
>
>> Ahoj,
>>
>> potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo by me :
>>
>> - jaka je nejlepsi knihovna pro praci s SQL ? Zatim jsem nasel (PyMySQL,
>> SQLAlchemy, MySqlDb) Chtel bych se naucit neco co bude mozne pouzit i na
>> slozitejsi projekty
>> - je ORM vhodne i na jednodussi projekty ?
>> - pokud budu v SQL chtit pouzivat vice SQL dotazu, je to mozne udelat
>> pres jedno spojeni (jeden cursor) nebo je nutne mit vice otevrenych spojeni
>> ? Viz nasledujici priklad - jedno otevrene spojeni
>>
>>
>>  sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)
>>  self.cursor.execute(sql)
>>  data = self.cursor.fetchall()
>>  c = self.cursor.rowcount
>>  for row in data:
>>  sql1 = "INSERT INTO values VALUES ('',NOW(),0," + str(row[0]) + ")"
>>  try:
>>  self.cursor.execute(sql1)
>>  except:
>>  self.db.rollback()
>> ___
>> Python mailing list
>> python@py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>>
>
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-28 Tema obsahu Jan Bednařík
Ahoj,

Začínat s jazkem SQL je předčasná optimalizace. Začni s ORM. Doporučil bych
SQLAlchemy ORM nebo Django (pokud chceš dělat webové aplikace). Na drtivou
většinu věcí ti to bude stačit. Jazyk SQL je pro běžné potřeby zbytečně
nízkoúrovňový. Psát, testovat a udržovat kód se syrovým SQL je velká ztráta
času.

Záleží na projektu, ale když už náhodou budeš potřebovat něco, s čím si
tyhle ORM efektivně neporadí, tak to bude vyjímečná situace. V takových
situacích si většinou poradíš tím, že budeš trochu študovat manuály a
googlit, a zjistíš, že to často taky jde efektivně i s ORM. A když ne, tak
data vytaháš a zpracuješ je v Pythonním kódu. A když dat bude moc, a tohle
efektivně taky nepůjde, tak se naučíš pracovat s SQLAlchemy Core nebo
nastuduješ trochu toho syrového SQL.

Co se týče databáze, MySQL/MariaDB bych se vyhnul obloukem. Není ACID
(ačkoliv se tím pyšní), autocommituje změny schématu i během transakcí (cca
10 let stále neopravený a zřejmě neopravitelný bug). Při běžném použití tě
to nepotrápí. Ale jakmile se projekt rozjede a začneš dělat migrace
schematu a dat, tak tě to dřív nebo později pěkně vyjebe. Stalo se mi to v
životě asi třikrát, z toho dvakrát na nových projektech, kdy jsme MySQL
dali "ještě jednu šanci" protože PostgreSQL nebyla z nějakého důvodu
jednoduše k dispozici. S ORM můžeš opustit MySQL/MariaDB relativně snadno,
ale proč s ní vůbec začínat, když je tam (krom jiných neduhů) taková past?!

Doporučil bych PostgreSQL. S tou se nedá šlápnout vedle pro jakýkoliv
projekt. Má i zajímavé "NoSQL" fičury, jako datové typy JSON a hstore,
které stojí za pozornost.

SQLite může být taky dobrá volba, ale záleží na projektu. Její super fičura
je snadno použitelná databáze v RAMce, což se hodí hlavně pro testy.

Honza


2017-12-25 11:41 GMT+01:00 Lubomir Vogl :

> Ahoj,
>
> potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo by me :
>
> - jaka je nejlepsi knihovna pro praci s SQL ? Zatim jsem nasel (PyMySQL,
> SQLAlchemy, MySqlDb) Chtel bych se naucit neco co bude mozne pouzit i na
> slozitejsi projekty
> - je ORM vhodne i na jednodussi projekty ?
> - pokud budu v SQL chtit pouzivat vice SQL dotazu, je to mozne udelat pres
> jedno spojeni (jeden cursor) nebo je nutne mit vice otevrenych spojeni ?
> Viz nasledujici priklad - jedno otevrene spojeni
>
>
>  sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)
>  self.cursor.execute(sql)
>  data = self.cursor.fetchall()
>  c = self.cursor.rowcount
>  for row in data:
>  sql1 = "INSERT INTO values VALUES ('',NOW(),0," + str(row[0]) + ")"
>  try:
>  self.cursor.execute(sql1)
>  except:
>  self.db.rollback()
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu starenka .
>> Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
stále překonává třeba ten Postres.

Muzu se zeptat v cem?
-
'aknerats'[::-1]

On Dec 28, 2017 00:22, "Daniel Milde"  wrote:

Já bych ještě dodal, že ani Mysql/MariaDB/PerconaDB není žádná hračka :)

Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
stále překonává třeba ten Postres.

Jinak k dotazu tazatele: z konektorů bych doporučil PyMysql a na
samotnou tvorbu dotazů buď:

1) SQLAlchemy pokud budeš dělat v aplikaci i zápisy a většinu času budeš
potřebovat data celých entit/modelů.

nebo

2) SqlPuzzle pokud se budeš jen dotazovat a budeš potřebovat hodně
specifické dotazy, které je vhodné psát v něčem víc blízkém SQL.

Dan


Dne 27.12.2017 v 13:50 Matěj Cepl napsal(a):
> On 2017-12-27, 11:33 GMT, zu1234 wrote:
>> Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
>> Vyhnul bych se SQLAlchemy a ORM.
>> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
> Souhlas, pro začátečníky bych doporučil
> https://docs.python.org/2.7/library/sqlite3.html a pak k tomu
> nějaký opravdový kurs SQL (když dáte do svého oblíbeného
> vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro
> SQLite podporuje většina databázových konektorů pro Python a pro
> začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat
> nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo
> MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný
> začátek počkat.
>
> SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se
> podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše
> laik).
>
> Matěj


___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Matěj Cepl
On 2017-12-27, 22:08 GMT, Honza Král wrote:
> Jedine omezeni SQLite je, ze nema dobrou story kolem konkurentniho pristupu
> vice uzivatelu. Pro spoustu aplikaci je to samozrejme problem ale pro
> stejne velkou spoustu to neni zadny problem.

Druhé omezení je, že SQLite neví nic o typech dat:

~$ sqlite3 /tmp/test.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table test ( intfield int(10) );
sqlite> insert into test (intfield) values ('text');
sqlite> select * from test;
text
sqlite>

Je na tom lépe nežli další hračka MySQL 
(https://mcepl.fedorapeople.org/tmp/mysql.png), protože alespoň 
nelikviduje Vaše data, ale do opravdové databáze to má podle 
mého daleko. Což není výtka vůči SQLite (je to výtka vůči MySQL, 
který předstírá, že je databáze), protože jak jsem řekl SQLite 
nebyla míněna jako databáze, ale jako základ datových formátů 
aplikací.

Hezký den,

Matěj
-- 
http://matej.ceplovi.cz/blog/, Jabber: mceplceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8
 
Ask yourself whether you’ve really obtained fullness of the Holy
Spirit, followed by gifts needed for your service.
-- Francis MacNutt
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Daniel Milde
Já bych ještě dodal, že ani Mysql/MariaDB/PerconaDB není žádná hračka :)

Je to velmi osvědčená a používaná databáze, v řadě věcí navíc ještě
stále překonává třeba ten Postres.

Jinak k dotazu tazatele: z konektorů bych doporučil PyMysql a na
samotnou tvorbu dotazů buď:

1) SQLAlchemy pokud budeš dělat v aplikaci i zápisy a většinu času budeš
potřebovat data celých entit/modelů.

nebo

2) SqlPuzzle pokud se budeš jen dotazovat a budeš potřebovat hodně
specifické dotazy, které je vhodné psát v něčem víc blízkém SQL.

Dan


Dne 27.12.2017 v 13:50 Matěj Cepl napsal(a):
> On 2017-12-27, 11:33 GMT, zu1234 wrote:
>> Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
>> Vyhnul bych se SQLAlchemy a ORM.
>> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
> Souhlas, pro začátečníky bych doporučil 
> https://docs.python.org/2.7/library/sqlite3.html a pak k tomu 
> nějaký opravdový kurs SQL (když dáte do svého oblíbeného 
> vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro 
> SQLite podporuje většina databázových konektorů pro Python a pro 
> začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat 
> nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo 
> MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný 
> začátek počkat.
>
> SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se 
> podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše 
> laik).
>
> Matěj


___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Honza Král
Jedine omezeni SQLite je, ze nema dobrou story kolem konkurentniho pristupu
vice uzivatelu. Pro spoustu aplikaci je to samozrejme problem ale pro
stejne velkou spoustu to neni zadny problem.

Vubec to nema nic spolecneho s tim zda to je "databazova" aplikace ci ne.
Skutecne to neni hracka a bezi na ni neuveritelne spousta technologii.


On Dec 27, 2017 17:05, "Matěj Cepl"  wrote:

On 2017-12-27, 16:47 GMT, Vláďa Macek wrote:
> Take neni spravne oznacit SQLite za hracku. Je to spickovy
> profesionalni software vhodny pro produkcni nasazeni tam, kde
> je to vhodne.

To myslím lze. Tedy lze říci, že z hlediska SQL databází to
hračka je. Dlužno samozřejmě dodat, že autor SQLite to moc jako
opravdovou SQL databázi nemyslel (jako konkurenci opravdových
RDBMS jako OracleDB, PostgreSQL, DB/2), původním záměrem bylo
vytvořit sofistikovanější základ pro formát dat pro aplikace
nikoli opravdovou SQL relační databázi. Dává to smysl?

Což samozřejmě znamená, že pro některé (nedatabázové) aplikace
je SQLite mnohem vhodnější (také je asi nejužívanějším SQL
interpretem na světě, není?), ERP systém pro nadnárodní
společnost bych nad SQLite mít nechtěl.

Hezký den,

Matěj
--
http://matej.ceplovi.cz/blog/, Jabber: mceplceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8

As a rule of thumb, the more qualifiers there are before the name
of a country, the more corrupt the rulers. A country called The
Socialist People's Democratic Republic of X is probably the last
place in the world you'd want to live.
-- Paul Graham discussing (not only) Nigerian spam
   (http://www.paulgraham.com/spam.html)
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Matěj Cepl
On 2017-12-27, 16:47 GMT, Vláďa Macek wrote:
> Take neni spravne oznacit SQLite za hracku. Je to spickovy 
> profesionalni software vhodny pro produkcni nasazeni tam, kde 
> je to vhodne.

To myslím lze. Tedy lze říci, že z hlediska SQL databází to 
hračka je. Dlužno samozřejmě dodat, že autor SQLite to moc jako 
opravdovou SQL databázi nemyslel (jako konkurenci opravdových 
RDBMS jako OracleDB, PostgreSQL, DB/2), původním záměrem bylo 
vytvořit sofistikovanější základ pro formát dat pro aplikace 
nikoli opravdovou SQL relační databázi. Dává to smysl?

Což samozřejmě znamená, že pro některé (nedatabázové) aplikace 
je SQLite mnohem vhodnější (také je asi nejužívanějším SQL 
interpretem na světě, není?), ERP systém pro nadnárodní 
společnost bych nad SQLite mít nechtěl.

Hezký den,

Matěj
-- 
http://matej.ceplovi.cz/blog/, Jabber: mceplceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8
 
As a rule of thumb, the more qualifiers there are before the name
of a country, the more corrupt the rulers. A country called The
Socialist People's Democratic Republic of X is probably the last
place in the world you'd want to live.
-- Paul Graham discussing (not only) Nigerian spam
   (http://www.paulgraham.com/spam.html)
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Vláďa Macek
S dovolením bych doplnil, ze to, zda je jednodussi SQL nebo ORM nad SQL
prece neni jednoznacne dane. Zalezi na ucelu projektu, backgroundu a
osobniho zameru samotneho novacka.

Neni pravda, ze kazdy, kdo pouziva RDBMS jako uloziste, musi dobre umet
SQL. Zalezi na projektu a jeho zameru.

Take neni spravne oznacit SQLite za hracku. Je to spickovy profesionalni
software vhodny pro produkcni nasazeni tam, kde je to vhodne.

To vse tedy nejde rict obecne.

-- 
: Vlada Macek  :  http://macek.sandbox.cz  : +420 608 978 164
: UNIX && Dev || Training : Python, Django : PGP key 97330EBD

___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Petr Blahos
>
> > Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
> > Vyhnul bych se SQLAlchemy a ORM.
> > Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.
>

Já souhlasím, samozřejmě, když chcete používat ať už ORM nebo jenom
QL, tak je potřeba vědět, co se děje pod tím...

Petr
--
http://petr.blahos.com/
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Matěj Cepl
On 2017-12-27, 11:33 GMT, zu1234 wrote:
> Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
> Vyhnul bych se SQLAlchemy a ORM.
> Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.

Souhlas, pro začátečníky bych doporučil 
https://docs.python.org/2.7/library/sqlite3.html a pak k tomu 
nějaký opravdový kurs SQL (když dáte do svého oblíbeného 
vyhledávače SQL vypadne jich několik). DBAPI popsaných zde pro 
SQLite podporuje většina databázových konektorů pro Python a pro 
začátek to stačí. Pak jak se bude učit hlouběji, bude potřebovat 
nějakou opravdovou databázi (tj. ne hračky jako SQLite nebo 
MySQL, já mám oblíbený PostgreSQL), ale to může pro úplný 
začátek počkat.

SQLAlchemy nebo nějaké ORM jsou dobré, ale bez znalosti SQL se 
podle mého nikdo neobejde (uznávám, že v oblasti SQL jsem spíše 
laik).

Matěj
-- 
http://matej.ceplovi.cz/blog/, Jabber: mceplceplovi.cz
GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8
 
To bear a grudge and pray, means to sow seed on the sea and expect
a harvest.
  -- Saint Isaac of Nineveh
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu zu1234

Jsem stará konzerva a myslím si že začátečník by měl začínat jednoduše.
Vyhnul bych se SQLAlchemy a ORM.
Když jsem se snažil si zjednodušit život, většinou jsem si zavařil.


Dne 27.12.2017 v 9:26 Petr Blahos napsal(a):
Ahoj, já si jenom dovolím doplnit, že když budeš dělat webovou 
aplikaci v nějakém

frameworku, tak tam bude nějak vyřešen životní cyklus transakce, např.
v Pyramid+SQLAlchemy běžně tak, že v handleru máš k dispozici ORM session
(což je něco, pomocí čeho se s ORM pracuje), a automatický commit nebo 
roll-back.


Dál, s SQLAlchemy nemusíš jet pomocí ORM, má také query language (QL), 
kterým
sestavíš a spustíš dotaz - nějakej overhead tam samozřejmě je, ale je 
menší než

u ORM. Já, když mám malé množství recordů, tak použiju ORM, když dělám
nějakej přehled, tak použiju QL.

Petr
--
http://petr.blahos.com/




2017-12-25 12:59 GMT+01:00 Petr Messner >:


Ahoj,

pymysql a mysqldb jsou db drivery - klientské knihovny pro přístup
do databáze, umožňují provádět SQL dotazy, transakce a tak.

ORM je knihovna, která uvnitř typicky používá ten db driver (v
SQLAlchemy je součástí connection stringu informace, který driver
se má použít) a umožňuje pracovat s databází "objektovým
způsobem". Konkrétně SQLAlchemy je "filosoficky" založená na
design patternech Data Mapper a Unit of Work, jiná ORM (myslím že
např. to Djangové) mohou preferovat design pattern Active Record.
To píšu proto, kdybys chtěl dál zkoumat, proč a jak to funguje a
jaké jsou alternativy a výhody/nevýhody jednotlivých přístupů.

ORM může a nemusí být vhodné pro menší a větší projekty.
Samozřejmě můžeš kombinovat ORM a SQL přístup. Některé dotazy je
jednodušší zapsat přímo přes SQL, jindy je zase joinů anebo
sloupců tolik, že ORM dost šetří práci. Nebo pokud chceš používat
stored procedures a další funkcionalitu SQL databáze, tak asi
budeš chtít přímo SQL.

Co se týče volby mezi mysqldb a pymysql, tak dnes bych asi volil
pymysql.

Víc SQL dotazů samozřejmě můžeš dělat přes jedno spojení i přes
jeden kurzor. Víc kurzorů potřebuješ, když chceš dělat SQL dotazy
zatímco teprve zpracováváš výsledky jiného SQL dotazu. V tvém
příkladu si ale ty výsledky nejdřív načteš všechny z kurzoru do
paměti, takže je OK znovu použít ten kurzor.

Celá tahle abstrakce s kurzory by měla být v Pythonu pro všechny
SQL databáze stejná, je to definované v PEP 249:
https://www.python.org/dev/peps/pep-0249/


These objects represent a database cursor, which is used to
manage the context of a fetch operation. Cursors created from
the same connection are not isolated, i.e., any changes done
to the database by a cursor are immediately visible by the
other cursors.


Jinak bych tě ještě upozornil, ať se vyvaruješ *SQL injection*.
Správný přístup je použít v SQL zástupné symboly.a konkrétní data
dodat "bokem":

self.cursor.execute('INSERT INTO values VALUES ('', NOW(), %s)',
(row[0], ))

Kdyžtak tady je ukázka "jednoduché" webové aplikace používající
sqlite (napřímo), vzhledem k podobnosti všech driverů (díky PEP
249) by to skoro takhle vypadalo i s MySQL:
https://github.com/messa/db-workshop-web-app/blob/dokonceno/anketa.py


A tady je varianta s SQLAlchemy:
https://github.com/messa/db-workshop-web-app/blob/sqlalchemy/anketa.py


Další čtení: :)

- https://blog.sqreen.io/preventing-sql-injections-in-python/

- https://www.fullstackpython.com/databases.html


PM

Dne 25. prosince 2017 11:41 Lubomir Vogl mailto:pyt...@vogl.cz>> napsal(a):

Ahoj,

potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo
by me :

- jaka je nejlepsi knihovna pro praci s SQL ? Zatim jsem nasel
(PyMySQL, SQLAlchemy, MySqlDb) Chtel bych se naucit neco co
bude mozne pouzit i na slozitejsi projekty
- je ORM vhodne i na jednodussi projekty ?
- pokud budu v SQL chtit pouzivat vice SQL dotazu, je to mozne
udelat pres jedno spojeni (jeden cursor) nebo je nutne mit
vice otevrenych spojeni ? Viz nasledujici priklad - jedno
otevrene spojeni


 sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)
 self.cursor.execute(sql)
 data = self.cursor.fetchall()
 c = self.cursor.rowcount
 for row in data:
     sql1 = "INSERT INTO values VALUES ('',NOW(),0," +
str(row[0]) + ")"
     try:
         self.cursor.execute(sql1)
     except:
         self.db.rollback()

Re: [python] par dotazu od zacatecnika v SQL

2017-12-27 Tema obsahu Petr Blahos
Ahoj, já si jenom dovolím doplnit, že když budeš dělat webovou aplikaci v
nějakém
frameworku, tak tam bude nějak vyřešen životní cyklus transakce, např.
v Pyramid+SQLAlchemy běžně tak, že v handleru máš k dispozici ORM session
(což je něco, pomocí čeho se s ORM pracuje), a automatický commit nebo
roll-back.

Dál, s SQLAlchemy nemusíš jet pomocí ORM, má také query language (QL),
kterým
sestavíš a spustíš dotaz - nějakej overhead tam samozřejmě je, ale je menší
než
u ORM. Já, když mám malé množství recordů, tak použiju ORM, když dělám
nějakej přehled, tak použiju QL.

Petr
--
http://petr.blahos.com/




2017-12-25 12:59 GMT+01:00 Petr Messner :

> Ahoj,
>
> pymysql a mysqldb jsou db drivery - klientské knihovny pro přístup do
> databáze, umožňují provádět SQL dotazy, transakce a tak.
>
> ORM je knihovna, která uvnitř typicky používá ten db driver (v SQLAlchemy
> je součástí connection stringu informace, který driver se má použít) a
> umožňuje pracovat s databází "objektovým způsobem". Konkrétně SQLAlchemy je
> "filosoficky" založená na design patternech Data Mapper a Unit of Work,
> jiná ORM (myslím že např. to Djangové) mohou preferovat design pattern
> Active Record. To píšu proto, kdybys chtěl dál zkoumat, proč a jak to
> funguje a jaké jsou alternativy a výhody/nevýhody jednotlivých přístupů.
>
> ORM může a nemusí být vhodné pro menší a větší projekty. Samozřejmě můžeš
> kombinovat ORM a SQL přístup. Některé dotazy je jednodušší zapsat přímo
> přes SQL, jindy je zase joinů anebo sloupců tolik, že ORM dost šetří práci.
> Nebo pokud chceš používat stored procedures a další funkcionalitu SQL
> databáze, tak asi budeš chtít přímo SQL.
>
> Co se týče volby mezi mysqldb a pymysql, tak dnes bych asi volil pymysql.
>
> Víc SQL dotazů samozřejmě můžeš dělat přes jedno spojení i přes jeden
> kurzor. Víc kurzorů potřebuješ, když chceš dělat SQL dotazy zatímco teprve
> zpracováváš výsledky jiného SQL dotazu. V tvém příkladu si ale ty výsledky
> nejdřív načteš všechny z kurzoru do paměti, takže je OK znovu použít ten
> kurzor.
>
> Celá tahle abstrakce s kurzory by měla být v Pythonu pro všechny SQL
> databáze stejná, je to definované v PEP 249: https://www.python.org/dev/
> peps/pep-0249/
>
> These objects represent a database cursor, which is used to manage the
>> context of a fetch operation. Cursors created from the same connection are
>> not isolated, i.e., any changes done to the database by a cursor are
>> immediately visible by the other cursors.
>
>
> Jinak bych tě ještě upozornil, ať se vyvaruješ *SQL injection*. Správný
> přístup je použít v SQL zástupné symboly.a konkrétní data dodat "bokem":
>
> self.cursor.execute('INSERT INTO values VALUES ('', NOW(), %s)', (row[0],
> ))
>
> Kdyžtak tady je ukázka "jednoduché" webové aplikace používající sqlite
> (napřímo), vzhledem k podobnosti všech driverů (díky PEP 249) by to skoro
> takhle vypadalo i s MySQL: https://github.com/messa/db-workshop-web-app/
> blob/dokonceno/anketa.py
>
> A tady je varianta s SQLAlchemy: https://github.
> com/messa/db-workshop-web-app/blob/sqlalchemy/anketa.py
>
> Další čtení: :)
>
> - https://blog.sqreen.io/preventing-sql-injections-in-python/
> - https://www.fullstackpython.com/databases.html
>
> PM
>
> Dne 25. prosince 2017 11:41 Lubomir Vogl  napsal(a):
>
> Ahoj,
>>
>> potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo by me :
>>
>> - jaka je nejlepsi knihovna pro praci s SQL ? Zatim jsem nasel (PyMySQL,
>> SQLAlchemy, MySqlDb) Chtel bych se naucit neco co bude mozne pouzit i na
>> slozitejsi projekty
>> - je ORM vhodne i na jednodussi projekty ?
>> - pokud budu v SQL chtit pouzivat vice SQL dotazu, je to mozne udelat
>> pres jedno spojeni (jeden cursor) nebo je nutne mit vice otevrenych spojeni
>> ? Viz nasledujici priklad - jedno otevrene spojeni
>>
>>
>>  sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)
>>  self.cursor.execute(sql)
>>  data = self.cursor.fetchall()
>>  c = self.cursor.rowcount
>>  for row in data:
>>  sql1 = "INSERT INTO values VALUES ('',NOW(),0," + str(row[0]) + ")"
>>  try:
>>  self.cursor.execute(sql1)
>>  except:
>>  self.db.rollback()
>> ___
>> Python mailing list
>> python@py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>>
>
>
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz


Re: [python] par dotazu od zacatecnika v SQL

2017-12-25 Tema obsahu Petr Messner
Ahoj,

pymysql a mysqldb jsou db drivery - klientské knihovny pro přístup do
databáze, umožňují provádět SQL dotazy, transakce a tak.

ORM je knihovna, která uvnitř typicky používá ten db driver (v SQLAlchemy
je součástí connection stringu informace, který driver se má použít) a
umožňuje pracovat s databází "objektovým způsobem". Konkrétně SQLAlchemy je
"filosoficky" založená na design patternech Data Mapper a Unit of Work,
jiná ORM (myslím že např. to Djangové) mohou preferovat design pattern
Active Record. To píšu proto, kdybys chtěl dál zkoumat, proč a jak to
funguje a jaké jsou alternativy a výhody/nevýhody jednotlivých přístupů.

ORM může a nemusí být vhodné pro menší a větší projekty. Samozřejmě můžeš
kombinovat ORM a SQL přístup. Některé dotazy je jednodušší zapsat přímo
přes SQL, jindy je zase joinů anebo sloupců tolik, že ORM dost šetří práci.
Nebo pokud chceš používat stored procedures a další funkcionalitu SQL
databáze, tak asi budeš chtít přímo SQL.

Co se týče volby mezi mysqldb a pymysql, tak dnes bych asi volil pymysql.

Víc SQL dotazů samozřejmě můžeš dělat přes jedno spojení i přes jeden
kurzor. Víc kurzorů potřebuješ, když chceš dělat SQL dotazy zatímco teprve
zpracováváš výsledky jiného SQL dotazu. V tvém příkladu si ale ty výsledky
nejdřív načteš všechny z kurzoru do paměti, takže je OK znovu použít ten
kurzor.

Celá tahle abstrakce s kurzory by měla být v Pythonu pro všechny SQL
databáze stejná, je to definované v PEP 249:
https://www.python.org/dev/peps/pep-0249/

These objects represent a database cursor, which is used to manage the
> context of a fetch operation. Cursors created from the same connection are
> not isolated, i.e., any changes done to the database by a cursor are
> immediately visible by the other cursors.


Jinak bych tě ještě upozornil, ať se vyvaruješ *SQL injection*. Správný
přístup je použít v SQL zástupné symboly.a konkrétní data dodat "bokem":

self.cursor.execute('INSERT INTO values VALUES ('', NOW(), %s)', (row[0], ))

Kdyžtak tady je ukázka "jednoduché" webové aplikace používající sqlite
(napřímo), vzhledem k podobnosti všech driverů (díky PEP 249) by to skoro
takhle vypadalo i s MySQL:
https://github.com/messa/db-workshop-web-app/blob/dokonceno/anketa.py

A tady je varianta s SQLAlchemy:
https://github.com/messa/db-workshop-web-app/blob/sqlalchemy/anketa.py

Další čtení: :)

- https://blog.sqreen.io/preventing-sql-injections-in-python/
- https://www.fullstackpython.com/databases.html

PM

Dne 25. prosince 2017 11:41 Lubomir Vogl  napsal(a):

> Ahoj,
>
> potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo by me :
>
> - jaka je nejlepsi knihovna pro praci s SQL ? Zatim jsem nasel (PyMySQL,
> SQLAlchemy, MySqlDb) Chtel bych se naucit neco co bude mozne pouzit i na
> slozitejsi projekty
> - je ORM vhodne i na jednodussi projekty ?
> - pokud budu v SQL chtit pouzivat vice SQL dotazu, je to mozne udelat pres
> jedno spojeni (jeden cursor) nebo je nutne mit vice otevrenych spojeni ?
> Viz nasledujici priklad - jedno otevrene spojeni
>
>
>  sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)
>  self.cursor.execute(sql)
>  data = self.cursor.fetchall()
>  c = self.cursor.rowcount
>  for row in data:
>  sql1 = "INSERT INTO values VALUES ('',NOW(),0," + str(row[0]) + ")"
>  try:
>  self.cursor.execute(sql1)
>  except:
>  self.db.rollback()
> ___
> Python mailing list
> python@py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz
>
___
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python

Visit: http://www.py.cz