Szkriptek: Python, Perl, Bash, ...

Python MySQLdb

Szóval Pythonban MySQLdb használatával mi a hiba ebben az SQL parancsban. Maga a parancs az SQL változóba kerül.


SQL="""insert into szallitolevel (Sorszam, Oldalszam, Datum, Idopont, PartnerNev, PartnerCim, PartnerAdoszam, \
    PartnerBankszamla, Rendszam, FizMod, Mintavetel, BeepitesHelye, Megjegyzes, Homerseklet) values \
    (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""" % \
    (xSorszam, xOldalszam, xDatum, xIdopont, xPartnerNev, xPartnerCim, xPartnerAdoszam, \
     xPartnerBankszamla, xRendszam, xFizMod, xMintavetel, xBeepitesHelye, xMegjegyzes, xHomerseklet)

Már a szemem kifolyik annyira figyelem, de nem látom meg a hibát.

Python Qt4 tiltott mező színe

Most farigcsálom első Qt-s programomat Pythonban. Egy szállítólevél készítő program lesz, ha elkészül. Ezt azért tartom ideális első programnak a Python Qt4 tanulására, mert van benne adatbevitel, MySQL adattárolás, lekérdezés és listázás azaz nyomtatás.

Qt4-et használok elsősorban PySide-ot, de úgy tervezem, hogy paraméterezhetően PyQt4-el is menne.
A Formokat QT-Designerrel készítem.

Az az ötletem támadt, hogy azokat az adatokat, amiket adatbázisból hívok elő, és nem kell módosítani csak majd a szállítólevélre kinyomtatni illetve a szállítólevél adattábláiban eltárolni, azt magán a képernyőn tárolom QlienEdit-ben és QtableWidget-ekben. Ahhoz, hogy ezeket a felhasználó ne is tudja módosítani, az elemeket az elem.setEnabled(False) függvény hívásával tiltom. Ilyenkor a tartalmat megjeleníti, az értékét ki is lehet olvasni, meg programból értréket is lehet neki adni, de egérrel és billentyűzetről nem lehet módosítani.

Konkretizálom. A partner adatai tárolva vannak a partner táblában. Kiválasztom a megfelelő partnert, és a nevét, címét, stb. megjelenítem a képernyőn és majd ki is kell nyomtatni, de módosítani (esetleg véletlenül) nem lenne szabad.

Az a problémám, hogy ezek a tiltott elemek Windowson még csak-csak látszanak, de Ubuntu (11.04)-en olyan halványszürkék, hogy nagyon nehezen láthatóak.

A kérdésem a fenti módon tiltott elemek színét hogy lehet beállítani?
(Az külön jó lenne, ha globálisan lehetne a tiltott elemeket láthatóságát, színét beállítani és nem egyenként.)

Vagy van-e más mód, amivel a felhasználó általi szerkesztést meg tudom akadályozni? Mondjuk azt, hogy nem lehet szerkeszteni amúgy is kellene valamilyen vizuális módon jelölni.

[megoldva]sed ékezettelenítés, regexp furcsaság

Sziasztok!

Fájlnevekből szeretném kivenni az ékezeteket és mindent ami nem esik bele ebbe: A-Za-z0-9.
Illetve ami beleesik, azt kicserélni erre: _

Találtam itt a hup-on megfelelő ékezettelnítő scriptet, de az nekem kicsit kevés:
# echo $file| sed "y, űáéúőóüöíŰÁÉÚŐÓÜÖÍ,_uaeuoouoiUAEUOOUOI,"

Ugyanis a fájlnevekben ilyen karakter is előfordulhat: ▒
Ezzel próbálokzatam: echo $file | sed 's/[^A-Za-z0-9.]/_/g'

A fenti karakter azért fordulhat elő, mert az FTP szerver UTF-8-as, egyes kliensek (totalcommander) pedig nem a legfrissebb, és a felhasználót nem érdekli, hogy ékezet van a fájlnévben. (Ezt nem tudom meg lehet-e oldani szerverszinten.)

Az én scriptem a logika szerint mindent ki kéne csaréljen "_"-re, ami nem esik bele a A-Za-z0-9. tartományba.

Miért nem így tesz?

üdv: redman

[MEGOLDVA!] PyQt4 illetve PySide ékezetes szöveg probléma

PyQT illetve PySide használatával írnék egy programot. (Nem egyszerre, hanem párhuzamosan írom mind a két widget használatával.)
Az alábbi kódrészlet betölti egy ComboBox-ba a partnerek ID-jét illetve nevét egy stringgé összefűzve.


    def BetoltesPartnerek(self):
        cur.execute("select * from partner")
        numsorok = int(cur.rowcount)
        self.comboBox_Partnerek.clear()
        for i in range(numsorok):
            sor = cur.fetchone()
            nev=sor[1]
            #nev.encode('utf-8')
            self.comboBox_Partnerek.insertItem(i,str(sor[0])+": "+nev)
            # self.comboBox_Partnerek.insertItem(i,str(sor[0])+": "+sor[1])

Sajnos a comboBox-ban a névben a hosszú őŐ és űŰ helyett kérdőjel jelenik meg.
A "nev" változót már azért vettem fel, hogy tudjam manipulálni mielőtt a comboboxba teszem.
Az adatok MySQL adatbázisból jönnek, ahol az adatbázis alap kódolása UTF8_hungarian_ci, de az UTF8_default_ci-ve is ugyanez volt az eredmény.

Szóval a kérdés az, hogy a comboBox-ban hogyan lehet UTF-8-as szöveget helyesen megjeleníteni, beleértve az őŐ és űŰ betűket is.?

A megoldás:


def dbNyitas(phost='localhost',puser='uszallito',ppasswd='x321',pdb='dbszallito'):
    adatBazis = MySQLdb.connect(host=phost, user=puser, passwd=ppasswd, db=pdb, use_unicode=True, charset="utf8")
    cur = adatBazis.cursor()

Tehát a Python MySQLdb használata esetén az adatbázis megnyitásakor explicit módon meg kell adni, hogy unikódot használunk mégpedig utf-8 kódolással!
Nekem eredetileg csak ennyi volt:


def dbNyitas(phost='localhost',puser='uszallito',ppasswd='x321',pdb='dbszallito'):
    adatBazis = MySQLdb.connect(host=phost, user=puser, passwd=ppasswd, db=pdb)
    cur = adatBazis.cursor()

Azaz

use_unicode=True, charset="utf8"

hiányzott és ezek szerint az alapértelmezés valami más.

A tanulság: olvassunk doksikat! http://mysql-python.sourceforge.net/MySQLdb.html

Read-only_filerendszer

Sziasztok!

Olyan kérdéssel fordulok hozzátok, hogy lenne-e ötletek annak megoldására, hogy minél előbb észrevegyem ha a file rendszerem valamelyik gépen átáll read-only-ra. Pár hét alatt két szerver is volt amelyikben tönkrement a winchester és átállt read-only-ra, jó lett volna, ha mondjuk egyből kapok ilyenkor egy emailt, de bármilyen más megoldás érdekel.

[megoldva]2in1,1.bash: egy fájl valamely sorának kiírása egy másik fájlba; 2.vim: putty vágolapra másolás

Sziasztok!

1.bash
Adott egy fájl és ennek szeretném valamely sorát kiírni.
Így próbálom de nem megy.

#!/bin/bash
echo `awk 'NR ==$tuti' temp1${CIM[$i]}.txt`

próbáltam így is, illetve `` közzé téve.

#!/bin/bash
awk 'NR ==$tuti' temp1${CIM[$i]}.txt

viszont ha így beírom terminálba akkor szépen kiírja a 33. sort.

~#awk 'NR == 33' temp1.txt

2.vim:
Még lenne egy kérdésem most barátkozok a vim-mel win7 alol érem el a linux gépeket putty ssh kapcsolattal, vimből nem tudok a win7 vágolapjára másolni nano alol simán kijelölök egy sort és a win7 vágolapjára kerül. Gondolom a vimnek saját vágolapja van a linux rendszertől függetlenül vagy nem tudom, ti ezt hogy csináljátok?

[megoldva] bash for loop gány

Sziasztok!

~# cat szamlalo.sh

#!/bin/bash
for i in 0 .. 8;do
if feltétel;
then
done
else
{
műveletek
done
}
exit 0

~#bash szamlalo.sh
szamlalo.sh: line 5: szintaktikai hiba a váratlan done vezérjel körül
szamlalo.sh: line 5: ` done'

Nem tetszik neki a feltétel után a done :'( Goto kéne, de úgy tudom az itt nincs. Ötleteket szeretnék kérni, ki hogyan oldaná meg ezt?
Előre is köszönöm
Szerk
A megoldás:

#!/bin/bash
mkdir -p /tmp/nyomtato_szamlalo/
#nyomtatók ipcímei
CIM[0]=10.0.1.143
CIM[1]=10.0.1.147
CIM[2]=10.0.1.165
CIM[3]=10.0.1.13
CIM[4]=10.0.1.17
CIM[5]=10.0.1.200
CIM[6]=10.0.1.202
CIM[7]=10.0.1.64
CIM[8]=10.0.1.65
for i in 0 1 2 3 4 5 6 7 8 ; do
cd /tmp/nyomtato_szamlalo/
wget -d --output-file=/tmp/nyomtato_szamlalo/${CIM[$i]}.log --output-document=/tmp/nyomtato_szamlalo/oldal${CIM[$i]}.txt http://${CIM[$i]}/web/guest$
if [ $? != 0 ];
then
#wget sikertelen
continue
else
#wget sikeres

"Összetett" fájlnevek a scriptben

Biztos valami rém egyszerű lehet a megoldás, csak én nem látom :(
Szeretnék egy egyszerű kis scriptet összerakni, ami rekurzívan a kurrens könyvtártól befelé módosítja (csak) a fájlok jogosultságait, mondjuk így:


for item in `ls -R`
do
  if [ $item -d]
    echo "nem bántjuk: $item"
  else
    chmod 0660 $item
  fi
done

Igen ám, de ha szóköz, vagy pl kapcsos zárójel és egyéb jelek vannak a fájlnévben, akkor annyi "item" lesz egy fájlnévből ahány ilyen karakter van a fájlnévben. Hogy kellene ezt megoldani?

[megoldva]szerver oldali program által generált weblap letöltése

Szasztok!

bash Szkriptet szeretnék írni ami hónapról hónapra össze szedi jó pár darab nyomtató számláló állását.
Úgy gondoltam, hogy a nyomtató webesfelületét kéne lelopjam, nem a *.cgi érdekel engem hanem a legenerált html oldal és itt akadtam el
Van valakinek ötlete merre induljak el?

előre is köszönöm

Ja ez kimaradt bash szkriptre gondoltam :)