🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
5 messages
5 total messages Started by aras Sat, 20 Feb 2010 16:01
MySQLdb - dziwaczny bład
#27309
Author: aras
Date: Sat, 20 Feb 2010 16:01
26 lines
1913 bytes
Witam,
Prościutki skrypt, który nagle przestał działać:

import MySQLdb
 >>> def zapisz(zapytanie):
...     db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
...     c=db.cursor()
...     wynik=c.execute(zapytanie)
...    return wynik

Problem w tym, że select działa prawidłowo, natomiast insertem nic nie 
moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko 
było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało 
wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych 
danych wstawianych z posiomu skryptu.
Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam 
skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego 
samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem 
podejrzewać pythona.
Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa 
wszystko działa jak trzeba, a więc również serwer bazodanowy musze 
wykluczyć jako winowajcę.

No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie 
bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało 
jak trzeba, spieprzyło się nagle... samo :P
Re: MySQLdb - dziwaczny bład
#27310
Author: Rob Wolfe
Date: Sat, 20 Feb 2010 16:42
40 lines
2383 bytes
aras <aras@nospam.pl> writes:

> Witam,
> Prościutki skrypt, który nagle przestał działać:
>
> import MySQLdb
>>>> def zapisz(zapytanie):
> ...     db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
> ...     c=db.cursor()
> ...     wynik=c.execute(zapytanie)
> ...    return wynik
>
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby
> wszystko było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie
> zostało wykonane poprawnie ale w bazie zero efektu działania inserta -
> żadnych danych wstawianych z posiomu skryptu.
> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego
> samego serwera bazodanowego. Niestety skutek ten sam, a więc
> przestałem podejrzewać pythona.

Czyżby jakiś mały upgrade MySQLdb?
$ python -c "import MySQLdb; print MySQLdb.__version__"
1.2.2

> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze
> wykluczyć jako winowajcę.
>
> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało
> jak trzeba, spieprzyło się nagle... samo :P

W takich przypadkach najlepiej zacząć od FAQ:
http://mysql-python.sourceforge.net/FAQ.html

Polecam punkt o wiele mówiącym tytule "My data disappeared!". ;)

RW
Re: MySQLdb - dziwaczny bład
#27311
Author: Adam Przybyla
Date: Sat, 20 Feb 2010 18:17
30 lines
2307 bytes
aras <aras@nospam.pl> wrote:
> Witam,
> Prościutki skrypt, który nagle przestał działać:
> 
> import MySQLdb
> >>> def zapisz(zapytanie):
> ...     db=MySQLdb.connect("127.0.0.1","login","haslo","baza")
> ...     c=db.cursor()
> ...     wynik=c.execute(zapytanie)
> ...    return wynik
> 
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie 
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko 
> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało 
> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych 
> danych wstawianych z posiomu skryptu.
> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam 
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego 
> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem 
> podejrzewać pythona.
> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa 
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze 
> wykluczyć jako winowajcę.
> 
> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie 
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało 
> jak trzeba, spieprzyło się nagle... samo :P
	... a moze ktso ci namieszal w uprawnianiach na serwerze? Potrafisz 
ten insert zrobic z konsoli i przy tych samych uprawnianiach? Z powazaniem
								Adam Przybyla
Re: MySQLdb - dziwaczny bład
#27312
Author: Daniel Mróz
Date: Sun, 21 Feb 2010 00:38
33 lines
2382 bytes
On 20.02.2010, aras <aras@nospam.pl> wrote:
> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie 
> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko 
> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało 
> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych 
> danych wstawianych z posiomu skryptu.
cursor.execute("""COMMIT""")

> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam 
> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego 
> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem 
> podejrzewać pythona.
> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa 
> wszystko działa jak trzeba, a więc również serwer bazodanowy musze 
> wykluczyć jako winowajcę.
Stawiam na brak autocommit.

> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie 
> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało 
> jak trzeba, spieprzyło się nagle... samo :P
Sprawdź czy po COMMIT dane zostaną zapisane. Jeśli tak, zobacz co
zostało zmienione, co mogło mieć wpływ na domyślne ustawienie
wartości autocommit.


Pozdrawiam
Beorn

-- 
Daniel 'Beorn' Mróz <beorn@alpha.pl>    http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V!  PS+ PE++ Y+ PGP++ t- 5  X R !tv b+ DI D++ G++ e h*]
[                          r++  y+                           ]
Re: MySQLdb - dziwaczny bład
#27313
Author: aras
Date: Tue, 23 Feb 2010 18:36
48 lines
3088 bytes
Daniel Mróz pisze:
> On 20.02.2010, aras <aras@nospam.pl> wrote:
>> Problem w tym, że select działa prawidłowo, natomiast insertem nic nie 
>> moge wstawić. Metoda nie wywala żadnego wyjątku, wygląda jakby wszystko 
>> było OK, zmienna 'wynik' ma wartosc 1, że niby zapytanie zostało 
>> wykonane poprawnie ale w bazie zero efektu działania inserta - żadnych 
>> danych wstawianych z posiomu skryptu.
> cursor.execute("""COMMIT""")
> 
>> Podejrzwałem, że coś sie schrzaniło po stronie pythona, więc ten sam 
>> skrypt odpaliłem na innej maszynie podając w nim odpowiedni adres tego 
>> samego serwera bazodanowego. Niestety skutek ten sam, a więc przestałem 
>> podejrzewać pythona.
>> Rzecz w tym, że logując się jakimkolwiek klientem do tegoż MySQLa 
>> wszystko działa jak trzeba, a więc również serwer bazodanowy musze 
>> wykluczyć jako winowajcę.
> Stawiam na brak autocommit.
> 
>> No i szczerze mówiąc nie mam pomysłu na rozwiązanie problemu... nie 
>> bardzo wiem nawet gdzie szukać. Dodam, że wcześniej wszystko działało 
>> jak trzeba, spieprzyło się nagle... samo :P
> Sprawdź czy po COMMIT dane zostaną zapisane. Jeśli tak, zobacz co
> zostało zmienione, co mogło mieć wpływ na domyślne ustawienie
> wartości autocommit.
> 
> 
> Pozdrawiam
> Beorn
> 
COMMITa powinienem chyba wykluczyć jeśli jechałem na MyISAM (?)
Tak czy inaczej zaczęło działać. Reinstalka MySQLa + grzebanina w 
ustawieniach na chybił/trafił pomogła :D Sam nie wiem co było nie tak, 
ale w końcu ruszyło.

Koledze Adamowi odpowiadam:
To nie sprawa uprawnień. Jestem jedyną osobą mającą dostęp do maszynki, 
do konta roota, więc to nie uprawnienia. Inserty z dowolnego klienta 
(również tego spod konsoli) działały jak należy. Dałem nawet tcpdumpa, 
żeby podsłuchać czy przypadkiem te klienty nie dają COMMIT na końcu (tak 
na wszelki wypadek) - nie dawały, więc to też nie to.

Wogóle zdałem sobie sprawę, że to NTG po tym, jak moja aplikacja w javie 
korzystająca z tej samej bazy również przestała zapisywać. Odczyt - 
spoko, ale jakiekolwiek modyfikacje nie zostały zachowywane.

Tak czy inaczej dzieki :)

pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads