Új hozzászólás Aktív témák
-
-
válasz
adam0913
#1143
üzenetére
Ha sqlite akkor csak körbe kell rakni szögletes zárójellel vagy macskakörömmel:[Tabla 123 akarmi]vagy"Tabla 123 akarmi"
Forrás: [link]#1145 - mysql-re meg mégjobb ez:
Csinálhatsz a forás névből egy hash-t és az lesz a tábla neve, nem lesz ütközés, és bármi lehet az eredeti név:
import hashlib
...
table_name = hashlib.sha256(name).hexdigest()Kódban így néz ki:
query = """CREATE TABLE IF NOT EXISTS "T_{tabla_nev}" (
`Megnevezes` varchar(100) DEFAULT NULL,
`Ev1` varchar(100) DEFAULT NULL,
`Ev2` varchar(100) DEFAULT NULL,
`Ev3` varchar(100) DEFAULT NULL,
`Ev4` varchar(100) DEFAULT NULL,
`Ev5` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8""".format(tabla_nev=table_name)
ésquery = """load data local infile 'C:/Python27/output.csv'
into table "T_{tabla_nev}"
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
""".format(tabla_nev=table_name) -
válasz
adam0913
#1135
üzenetére
query = """CREATE TABLE IF NOT EXISTS {tabla_nev} (
`Megnevezes` varchar(100) DEFAULT NULL,
`Ev1` varchar(100) DEFAULT NULL,
`Ev2` varchar(100) DEFAULT NULL,
`Ev3` varchar(100) DEFAULT NULL,
`Ev4` varchar(100) DEFAULT NULL,
`Ev5` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8""".format(tabla_nev=name)és
query = """load data local infile 'C:/Python27/output.csv'
into table {tabla_nev}
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
""".format(tabla_nev=name)De a name változó csak ellenőrzött forrásból jöjjön, különben: [link]
-
justmemory
senior tag
válasz
adam0913
#1137
üzenetére
Szerintem az aposztrófok miatt. Ha én hozzá szeretnék tenni egy változóban tárolt értéket az adatbázisomhoz, akkor a kód a következő:
cur.execute('insert into TABLE(Datum, Valami, Valami) \
values("'+str(mai_datum)+'", "'+str(valami_ertek)+'", "'+str(valami_ertek)+'");')Nézd meg, hogy az aposztrófok hogyan alakulnak... Még nem hoztam létre változóval táblát, de feltételezem, hogy nagyjából hasonló elv mentén kellene megpróbálni. Hozzá kell tegyem azt is, hogy én már nem MySQL-t, hanem SQLite3-at használok, de szerintem ebben olyan nagy különbség nincs.
-
justmemory
senior tag
válasz
adam0913
#1135
üzenetére
Szia,
csak azt nem írtad meg, hogy létrehozza-e a táblát ezzel a módszerrel...
Egyébként szerintem ennek a módszernek működnie kellene, szerintem én is így csinálnám, ennél egyszerűbb szerintem nincsen... (Mármint annál egyszerűbb, hogy egy változóban tárolt névvel hozz létra táblát, és ehhez a create table-t használod.)
Annyit azért hozzá kell tegyek, hogy a az aposztrófokkal (",') sokat kellett kísérletezzek, mire sikerült a változó és egyéb infókat úgy betennem, hogy aztán azt is csinálja a program, amit akartam
-
válasz
adam0913
#1126
üzenetére
arra gondoltam, hogy egy csv-nél vannak formázási lehetőségek, amiket használhatsz.
pl. a0,1,2,3és a"0";"1";"2";"3"ugyanaz a csv.és igen, ettől még meg kell oldanod, hogy az utolsó két oszlop az ne folyjon össze. ezért vagy egy listába parseolsz, és utána a lista két utolsó oszlopát összeadod, a szükségtelen elemeket pedig eltávolítod. így elég csak a csv.writernél formázni a csv-t.
#csv előkészítés
filename=r'path\output.csv'
#én ezeket (encoding, stb.) használom, egyéb megkötések miatt
resultcsv=open(filename,"w", encoding="iso-8859-15", newline='')
output=csv.writer(resultcsv, delimiter=';',quotechar = "'")
#ha valami az egy tömb az adatokkal
for row in valami:
row[3]=(str(row[3])+","+str(row[4]))
del row[4]
output.writerow(row)
#végül lezárjuk, vagy átírhatod with:-re és akkor nem kell
resultcsv.close() -
justmemory
senior tag
válasz
adam0913
#1130
üzenetére
Persze, hogy úgy hivatkozik rá, hiszen úgy tetted be gyakorlatilag egyetlen cellába, ezt jól látod

Azt a sort kellene picit megkezelni szerintem, hogy:for data in record.findAll('td'):
datatable = datatable+","+data.textItt a
datalesz a kulcs (pontosabban adata.text), ezeket kellene aforciklus alatt a különböző "adatbáziscellákba" elhelyezni szerintem.
Ez annyiból trükkös szerintem, hogy figyelned kell, hogy éppen melyik adatnál jársz (pénznem, devizanév, egység, pénznemforintban) aforciklus alatt, hogy azt az adatot a megfelelő cellába tudd tenni.Tegyük hozzá, hogy picit vaktában találgatok, mert közben nem próbálgatom itt konzolban...

-
justmemory
senior tag
válasz
adam0913
#1128
üzenetére
Sql adatbázishoz te magad adod meg, hogy melyik "cellába" mit és hogyan (milyen formátumban - pl. dátum, szám, stb.) mentsen (ok, talán a sorszámozás kivétel ez alól). Most így hirtelen a kódot nézve nem biztos, hogy direkt módon kellene/lehetne megoldani, hanem akár egy lista vagy valami más közbeiktatásával (változók külön-külön adatoknak).
Windows alatt nem használtam még sem a python-t, sem az sql-t, szóval lehet, hogy amit írok az nem mindig válik be. Linux egyszerűbb ilyen szempontból...

Azt is el kell döntened, hogy sqlite-ot vagy mondjuk mysql-t akarsz-e használni, mert picit más a metódusa az adatok kinyerésének is, plusz egyéb más specialitások is vannak. Az adatbáziskezelős dolog azért picit trükkösebb - vagy nekem legalábbis az volt - annál, mint hogy simán kiírod egy fájlba
A stackoverflow is jó; én olykor még a zetcode-ot is nézegettem. Plusz bármi mást, ami az adott problémámra releváns megoldást kínált...
-
justmemory
senior tag
válasz
adam0913
#1126
üzenetére
Szia,
szerintem amit te szeretnél, azt utólag, az Excelben való "mókolással" lehet a legegyszerűbben megoldani, hiszen alapvetően .csv kiterjesztésbe mented a python scriptben az adatokat; a .csv-t pedig - tudomásom szerint, de javítsatok ki, ha tévedek, mert nem vagyok nagy Excel guru - az Excel úgy nyitja meg, hogy egyetlen sorba írja ki. Ezen utólag lehet változtatni úgy, hogy magában az Excelben állítod be, hogy mondjuk a vesszők (vagy pontosvesszők) mentén szedje szét a sort, és tegye őket külön cellába...
Ha nagyon nagy butaságot írtam, bocsesz, de jelen tudásom szerint én kb. így csinálnám; nagyon nem néztem utána...
Egyébként a másik megoldás, hogy valamilyen adatbázisba (pl. sql) teszed be az adatokat, és akkor onnan mondjuk egy saját, adatbáziskezelős kis alkalmazással nyitogatod meg, és nem Excel-el. Persze ha Excel-ben kell dolgozz vele utána, az más...
Új hozzászólás Aktív témák
- Renault, Dacia topik
- CES 2026: Teljesen szürreális lett az ASUS asztali gamer PC-je
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Temu
- Óra topik
- Autós topik
- NFL és amerikai futball topik - Spoiler veszély!
- 007 First Light - Bemutatkozott a PC-s gépigény
- Kormányok / autós szimulátorok topikja
- AliExpress tapasztalatok
- További aktív témák...
- Akcio! Csere- Beszámítás! Xbox Series S Játékkonzol!
- PS4 PRO 2TB SSHD + 3 játék + 2 Controller Makulátlan új állapotban FULL BOX!
- Asus P2b-s + P II 350mhz
- ASUS TUF Gaming F15 FX506H i7 / RTX 3050 TI / 16 GB RAM
- Samsung Galaxy A36 5G 6/128GB, Megkímélt, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garanciával!
- BESZÁMÍTÁS! Intel Core i7 4790 4 mag 8 szál processzor garanciával hibátlan működéssel
- Xiaomi Poco x7 Pro 512GB,Újszerű,Dobozaval,12 hónap garanciával
- Akció!!! Lenovo ThinkPad P15 Gen 1 Intel i7-10875H 32GB 1000GB Nvidia Quadro RTX 3000 1 év garancia
- LG 32GQ850-B - 32" NANO IPS ATW / 2560x1440 / 260Hz 1ms / NVIDIA G-Sync / AMD FreeSync / HDR 600
- Apple Mac Studio M2 Ultra 24 magos CPU, 60 magos GPU, 64GB RAM, 1024GB SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest




