<div dir="auto">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.</div><div class="gmail_extra"><br><div class="gmail_quote">On Dec 28, 2017 5:57 PM, "Jan Bednařík" <<a href="mailto:jan.bednarik@gmail.com">jan.bednarik@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ahoj,<div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>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?!</div><div><br></div><div>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.</div><div><br></div><div>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.</div><div><br></div><div>Honza</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-12-25 11:41 GMT+01:00 Lubomir Vogl <span dir="ltr"><<a href="mailto:python@vogl.cz" target="_blank">python@vogl.cz</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ahoj,<br>
<br>
potreboval bych poradit s SQL. Hraju si s MariaDB a zajimalo by me :<br>
<br>
- 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<br>
- je ORM vhodne i na jednodussi projekty ?<br>
- 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<br>
<br>
<br>
sql = "SELECT * FROM portal WHERE typ_id = " + str(typ)<br>
self.cursor.execute(sql)<br>
data = self.cursor.fetchall()<br>
c = self.cursor.rowcount<br>
for row in data:<br>
sql1 = "INSERT INTO values VALUES ('',NOW(),0," + str(row[0]) + ")"<br>
try:<br>
self.cursor.execute(sql1)<br>
except:<br>
self.db.rollback()<br>
______________________________<wbr>_________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listi<wbr>nfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
</blockquote></div><br></div>
<br>______________________________<wbr>_________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/<wbr>listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
<br></blockquote></div></div>