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 > 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:
      

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