Hirdetés

Új hozzászólás Aktív témák

  • velizare

    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 writer quoting=csv.QUOTE_NONNUMERIC megadásánál kéne csinálnia, én quoting=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.

Új hozzászólás Aktív témák