- iPhone topik
- Vodafone mobilszolgáltatások
- Telekom mobilszolgáltatások
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Eleglide C1 - a középérték
- Milyen okostelefont vegyek?
- Android szakmai topik
- DIGI Mobil
- Android alkalmazások - szoftver kibeszélő topik
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
Hirdetés
-
Eleglide C1 - a középérték
ma Szintet lépett az Eleglide, az egyébként egész korrekt M2 után a C1 sokkal komfortosabb közlekedésre alkalmas.
-
Az üzleti chatbot lehet az új fejőstehén
it Üzleti chatbotot indított az Anthropic, azt reméli, hogy sok pénz folyik majd be a cégektől.
-
VR játék lesz az Batman: Arkham Shadow (Meta Quest 3)
gp Egyelőre csak egy teaser trailert kaptunk a teljes leleplezésre a Summer Game Festen kerül sor.
Új hozzászólás Aktív témák
-
nagyúr
üdv, a topicnak!
tudja valaki, hogy a pip honnan szedi a compiler pathokat? egész pontosan a c++ fordítóét. cx_Oracle modullal kell dolgoznom, és ezt le kell fordítgatnom, mert a fejlesztője ritkán updateli a python új alverzióihoz. 3.4hez van, 3.6hoz már nincs. a hiba, hogy a cl.exe hiányára hivatkozva leáll a pip install (pip install cx_Oracle). felraktam hozzá a 14.xx visual c++ runtimeot, de nem változott semmi. a vicc, hogy még akkor is sem találja a cl.exe-t ha ugyanabból a könyvtárból indítom a pipet, ahol van.
win10, py3.6.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
sshtunnel-t használ valaki? valamiért nem működik ez a csatornanyitás with contextussal:
with sshtunnel.SSHTunnelForwarder(
('jumpserver', 22),
ssh_username="username",
ssh_password="password",
remote_bind_address=('remotehost',1521),
local_bind_address=('127.0.0.1',1521)
) as tunnel:
innen nyitnék egycx_Oracle.connect
-tel egy db kapcsolatot, de egyszerűen nem nyitja meg a csatornát.viszont with contextus nélkül tökéletesen elérem az adatbázist.
tunnel = sshtunnel.SSHTunnelForwarder(('jumpserver', 22),ssh_username="username",ssh_password="password",remote_bind_address=('remotehost', 1521),local_bind_address=('127.0.0.1', 1521))
tunnel.start()csak ezt utána be is kell zárnom.
van valakinek ötlete, miért nem működik with-tel? köszi
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz cousin333 #1036 üzenetére
(C:\ProgramData\Anaconda3) C:\Users\xxx>sshtunnel --version
sshtunnel 0.1.2
elvileg ez az aktuális. és igen, pont az a problémám, hogy hiába használom a példakódot, nem működik, az elvárt módon, és nem jövök rá, miért.[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz s3toraph #1047 üzenetére
anaconda sem rak fel mindent. ha valamilyen, nem általánosan használt 3rd party modulról van szó, azt külön kell condával/pippel felraknod hozzá.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
-
nagyúr
ami meglepetést okozhat, hogy az importált file-t a python singletonként kezeli, és csak egyszer inicializálja.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
akkor én is kérdezek egyet.
import cx_Oracle
try:
conn = cx_Oracle.connect(conn_str)
print ("connection successful.")
except:
print ("connection failed")
conn.close()
else:
print ("\o/\n")
#executing sql statement
sql_statement=U'select valami from valahonnan'
print("executing sql statement:")
print (textwrap.fill(sql_statement,width=60))
c = conn.cursor()
c.execute(sql_statement)
#put it to a list
for row in c:
#print it
#print (row)
#result.append(list(map(str,row)))
output.writerow(row)
c.close()
conn.close()és erre a hibaüzenet:
Traceback (most recent call last):
File "rfs/export_2_master_csv.py", line 51, in <module>
output.writerow(row)
File "C:\ProgramData\Anaconda3\lib\encodings\cp1250.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xbf' in position 72: character maps to <undefined>ami nem tetszik neki, az a következő érték:
'Gerrard¿s Cross'jó gewglis módjára az nls_lang beállításávál próbálkoztam, de az nem hozott sikert.
ötletek?Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz velizare #1091 üzenetére
ja és persze a file első sora deklarálja, mit is kéne használni
# -*- coding: utf-8 -*-
amit kihúztam a db-ből, hogy
NLS_NCHAR_CHARACTERSET AL16UTF16 és NLS_CHARACTERSET WE8ISO8859P15.ennek megfelelően megpróbálkoztam a connect sort módosítani:
conn = cx_Oracle.connect(conn_str, , encoding="iso-8859-15", nencoding="AL16UTF16")
persze, hogy nem változott semmi.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
-
nagyúr
válasz Flitzhugh #1116 üzenetére
python elérési\út\valami.py
célszerű ugyanabban a könyvtárban kiadni, és akkor egyszerűen
python valami.py
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
-
nagyúr
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()[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz sztanozs #1144 üzenetére
itt szerintem nem ez a baj, hanem maga az sql dobálgatja neki vissza a create table-t mert a szóközt tartalmazó, és/vagy számmal kezdődő táblanév megsérti az sql konvencióit.
@adam0913: szóközt hagyd el, vagy helyettesítsd aláhúzással. a táblanév első karaktere pedig erősen javasolt, hogy az angol abc egy szabadon választott betűje legyen.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz kezdosql #1168 üzenetére
megnyugodhatsz, elég sok minden változott. 1.5 óta meg pláne. ettől még nem kell kidobni a 2.7 tutorialt, ha konkrét problémád van, a python doksi elég részletes.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
aki már kínlódott ssh/scp/sftp és társaival:
a feladat egy gatewayen keresztül betalálni egy remote gépre (valami solaris dinoszaurusz), és onnan illetve oda fileokat elvinni/odatenni.
mivel paramikoval úgyis megcsináljuk a transportot, adná magát az sftp class, deviszont a remote gépen át kell sudozni egy másik (technikai) userre (nopasswordos, de akkor is), és utána lehet csak hozzáférni a szóbanforgó fileokhoz. sajnos a sudoval egyszerre nem lehet más parancsot kiadni (csak a keyloggert (rootsh) hajlandó indítani), ezért azexec_command
kiesett (kiadom a sudót, beveszi, de zárja is a transportot), ezért azinvoke_shell
-el kínlódok. van jobb megoldás?
mert így a saját userrel felloggolok a remote gépre, de így csak ezt tudom használni, mert a technikai user jelszavát az üzemeltetés nem adja ki. viszont az paramiko sftp nem támogat sudózást.
nézem az scp modult, de sudót az sem szeret.
ötlet?
nem igazán akarok workaroundokat (direkt bejelentkezéses useren keresztül, cat-tel fileokat létrehozni, cvs repón keresztül szinkronizálni, stb.) hackelni, ha van egyenes út is.[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz EQMontoya #1182 üzenetére
az a python és a solarison kívül még valami lenne, amihez nem értek, és három már kicsit sok nekem.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
-
nagyúr
ahogy olvasom, ez egy wrapper a windoze getservbyport függvénye fölött. ez nem csekkolja, hogy ténylegesen milyen szervíz fut azon a porton (azt sem, hogy fut-e egyáltalán), hanem megkérdezi a win service db-jétől, hogy ott milyen név van rámappelve erre a portra. megpróbálhatod ezt közvetlenül hívogatni, hogy az állandó eredményt ad-e, vagy már ott is hasonlókat kapsz.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
single threadben futtasd egy korlátozott portcím-tartományra, és nézd meg, hogy konzisztens-e az eredmény, amit kapsz.
egyébként meg igazából ssh-zhatok meg ftp-zhetek én akárhányas porton, ez a hívás egy dictionary-t használ, amit akár te is megírhatsz. egy listában intként eltárolod a portszámot, mellette pedig stringként hogy mi az a default szervíznév, ami általában használja, és ebből fordítgatsz.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz Atomixx #1303 üzenetére
segítene ám, ha a hibaüzenetet is leírnád.
cmdből python xyz.py paranccsal tudod futtatni a megírt kódot. vagy ha tiltja a vallásod a parancssor használatát, akkor rakj be a végére egy input sort, az megakasztja, amíg nem nyomsz meg valamit a billentyűzeten.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz #73749248 #1320 üzenetére
akkor lehet, hogy a te jövőd éppen nem.
2020ig tart a py2 támogatása, szóval én két évvel előtte senkinek nem fogom mondani, hogy ez a jövő.
persze, ha hozzá vagy kötözve valami legacy modul miatt, akkor így jártál. bár pont a támogatás kifutása miatt én már azt is megnézném, hogy mekkora erőfeszítés lenne portolni a modult, vagy a feltétlenül szükséges részeit külön processzként hívogatni.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz #73749248 #1333 üzenetére
mindig a feladathoz választunk eszközt. ergo minden döntés egyedi, és a kalapáccsal a kezünkben mindent szögnek nézünk üzemmód egyenes út a szopórollerhez.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
-
nagyúr
válasz kezdosql #1373 üzenetére
mert pl. droidban nincs benne alapértelmezetten a python interpreter így egy relatíve kis tudású app (meghív egy böngészőt egy difólt honlappal) is baromi nagy méretű tud lenni;
mert kezelned kell a t. vezetőség összes óhaját, akik a kövér ujjaikkal nem találják el a megfelelő gombot/beviteli mezőt;
egyéb.egyébként megy pythonnal, én elsőre a kivyvel próbálkoznék. más kérdés, hogy másban (pl java) esetleg könnyebb dolgod lenne.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
-
nagyúr
válasz ghostie #1456 üzenetére
karakterkészlet-konverziós probléma. nekem is volt hasonló, kb fél éve, és ha jól emlékszem, akkor azt lett a megoldás, hogy már egy ugyanolyan karakterkészletű csv-be tettem bele. kellene kód a tiédhez.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
-
nagyúr
válasz ghostie #1465 üzenetére
elég sok minden lehet. elsőre add hozzá a connection stringhez ezt:
encoding = "UTF-8", nencoding = "UTF-8"
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz ghostie #1465 üzenetére
illetve a biztonság kedvéért ezt még futtasd le külön:
import sys
sys.defaultencoding()[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz xAttilax #1532 üzenetére
van rá függvény, nem is egy:
os.listdir()
ésos.scandir()
.
amivel visszatér, abból kimazsolázod azokat, amelyek neked kellenek, és berakod egy listába, amelyen végigmenve megnyithatod, ami neked kell.[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz kezdosql #1577 üzenetére
jó, akkor teradata.
neked fog a választott sql típusának megfelelő modul kelleni.
sql kezelés pythonból nem igazán nagy kihívás. be kell majd állítanod az elején egy megfelelő connection stringet, amivel kapcsolódsz.
magukat a parancsokat pedig stringekként fogod beküldeni, ezeket a stringeket pedig úgy fogod statikus és dinamikus részekből összelegózni.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
itt ugye a sztori azzal kezdődik, hogy
#install dependencies
sudo apt-get install mercurial
és még sok minden más.
a mercurial egy forráskód management tool, olyan, mint a git. a bitbucket viszont mercurial repót használ, ezért kell. a hg clone paranccsal lemásolod a mögötte szereplő urlen található repositoryt.Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
van egy olyan kínom, hogy 3.5-6 alatt a csv modul kényszeresen konvertál minden intet floatba, és mögétesz egy .0 taget.
van ötlet, hogy lehet erről lebeszélni? a doksija azt írja, hogy csak a writerquoting=csv.QUOTE_NONNUMERIC
megadásánál kéne csinálnia, énquoting=csv.QUOTE_ALL
-t használok, delimiterrel, aszt mégis csinálja...a kód:
try:
snames=['db_1', 'db_2', 'db_3']
for i in range(len(snames)):
tnames=['table_1']
for j in range(len(tnames)):
export_all = export_2_file(servicename=snames[i])
export_all.csv_init('2018_07_31', snames[i] + '_' + tnames[j])
export_all.export_2_csv(tnames[j])a használt függvények:
import csv
import time
from connect_2_db import connect_2_db
class export_2_file():
def __init__(self, servicename=False):
#instancing db connection
if servicename:
self.cdb = connect_2_db(servicename)
if not servicename:
self.cdb = connect_2_db()
self.cdb_brdb = self.cdb.brdb()
def csv_init(self, csvdir, csvname, master=False):
self.timestr = time.strftime("%d-%m-%Y_%H_%M_%S")
filename = str(csvdir)+'\\'+str(csvname)+'_'+self.timestr+'.csv'
self.filename_act = filename
self.resultcsv = open(filename, "w", encoding="iso-8859-15", newline='')
self.output = csv.writer(self.resultcsv, delimiter=';', quotechar='"', quoting=csv.QUOTE_ALL)
def export_2_csv(self, tablename):
#create and execute query sql
self.sql = u"SELECT column_name FROM all_tab_cols WHERE table_name ='"+tablename+"' AND column_name NOT IN ( 'REFERENCE_TUPLE_ID', 'INSERTDATE' ) order by column_id asc"
self.cdb.exec_one(self.sql)
self.preselect = self.cdb.cursor.fetchall()
self.preselect_str = str([' '.join(item) for item in self.preselect]).strip('[]').replace("'", "")
#using the previous query result to create the select
#to query target table without having the fixed cells like sysdate, sequences, etc.
try:
self.sql_select = u"select "+self.preselect_str+" from "+tablename+" order by "+self.preselect_str
except:
pass
else:
self.result = self.cdb.exec_one(self.sql_select)
for row in self.result:
self.output.writerow(row)
print("\nExport "+tablename+" table succcess")
self.cdb.db_disc()
self.resultcsv.close()anonimizált részlet az eredményfileból
"customer_1";"customer_network";"2018-07-30 00:00:00";"31.0";"random error message'";"000000000000001"
a konvertált mező number típusú az oracleben.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz velizare #1632 üzenetére
ja az exec_one() az egy sima
def exec_one(self, sql, commit=False, talkback=False):
try:
self.cursor.execute(sql)meg némi debug rész utána, +opcionális commit.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
-
nagyúr
a close függvény. helyesen
filehandle.close()
. nem csoda, hogy a file-t létrehozza, de nem csinál semmit. ha kilövöd a py kernelt, akkor persze megjelenik a file, benne a tartalommal, mert a garbage collector lezárja neked.ja és javasolt kirakni cikluson kívülre.
import time
import random
print("itten most fileba irok")
filehandle = open("teszt2.txt", 'w')
random.seed(3)
for x in range(0, 10):
time.sleep(0.3)
y = random.randint(0, 100)
print("loop number: " + str(x) + " random number = " + str(y))
filehandle.write("Random number, index:" +str(x)+ "randomNumber:" +str(y)+"\n")
filehandle.close()
print("end")[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
nem lehet. az
io.close()
egy függvény, nem utasítás. afaik mindig is az volt pythonban. aprint()
volt még a 2.xxben statement, meg lehetett hívni üresen, zárójel nélkül, de a 3.xxben már függvény, és úgy is kell meghívni.
afilehandle.close()
a close() függvényt (metódust) hívja meg. afilehandle.close
pedig nem.
ha jobban megnézed, a rövid példádbanfilehandle.close()
szerepel, az azért működött.az a zárójel nem dísznek van ott, vagy az én úri hóbortom miatt. nem stilisztika.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz EQMontoya #1653 üzenetére
az a rövid kódja, ami mindig is működött.
a hosszabb példában, amiben a for ciklus is van, következetesen rosszul van meghívva a close.szerintem hibaüzenetet kapott arra, amikor a a for ciklusban függvényként hívta a close()-t, mert a következő iterációnál a már lezárt fileba akart beleírni, és így khm... 'javította'. mert így nem kapott hibaüzenetet futtatásnál. erre írtam, hogy ha lehet, toljuk ki a close()-t cikluson kívülre.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.