- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Bemutatkozott a Poco X7 és X7 Pro
- Telekom mobilszolgáltatások
- Prohardver app (nem hivatalos)
- iPhone topik
- Garmin Instinct – küldetés teljesítve
- Poco F6 5G - Turbó Rudi
- QWERTY billentyűzet és másodlagos kijelző is lesz a Titan 2-ben
- Rekord vékony lesz a Z Flip7 is
Új hozzászólás Aktív témák
-
-
sztanozs
veterán
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) -
sztanozs
veterán
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
data
lesz a kulcs (pontosabban adata.text
), ezeket kellene afor
ciklus 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) afor
ciklus 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ájlbaA 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
Hirdetés
- Apple MacBook
- Kuponkunyeráló
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Path of Exile (ARPG)
- Hardverkemping június végén
- Milyen billentyűzetet vegyek?
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Ubiquiti hálózati eszközök
- Filmvilág
- Bemutatkozott a Poco X7 és X7 Pro
- További aktív témák...
- Bomba ár! Asus Slate EP121 Tablet - Intel Core i5 I 4GB I 64GB SSD I 12" Touch I Cam I W10 I Gari!
- Bomba ár! HP EliteBook 2570P - i5-3GEN I 4GB I 320GB I DVD I 12,5" HD I W10 I Garancia!
- Bomba ár! HP EliteBook 2560P - i5-2GEN I 4GB I 320GB I 12,5" HD I W10 I Garancia!
- Bomba ár! HP EliteBook 2540P - i5-540M I 4GB I 250GB I 12,1" WXGA I W10 I Garancia!
- Bomba ár! Fujitsu LifeBook S761 - i7-2GEN I 8GB I 320GB I 13,3" HD I HDMI I W10 I Garancia!
- Bomba ár! Lenovo ThinkPad X270 - i5-6G I 8GB I 256GB SSD I 12,5" FHD I HDMI I Cam I W10 I Garancia!
- Apple iPhone 16 128GB Kártyafüggetlen 1Év Garanciával
- Intel Core i7-8700, i7-9700 CPU, processzor - Számla, garancia
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RX 6700 XT 12GB ZALMAN S3 TG CM 700W
- Bomba ár! Lenovo ThinkBook 14s Yoga - i5-1135G7 I 16GB I 256SSD I 14" FHD Touch I Cam I W11 I Gari
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest