folder Tahribat.com Forumları
linefolder Python
linefolder Python Oracle Sorgu Hatası



Python Oracle Sorgu Hatası

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayd
    ayd's avatar
    Kayıt Tarihi: 21/Eylül/2019
    Erkek

    selamlar.

    dbden veri okuyup, excele yazacak ve excel içerisinde de bazı hücreleri random olarak değer atayacak program yazmak istiyorum. python'a merak saldigim icin ugrasiyorum, bahanesi oldu. is yeri icin surekli kalite belgeleri cikartmak gerekiyor ve can sıktı.

    gelelim konuya. aşağıda kod herşeyiyle çalışıyor. en aşağıdaki plsql sorgusu da db'de çalışıyor fakat kodun içerisinde "Invalid syntax" hatası veriyor. O sorgu yerine tek satır, basit bir sorgu yazdığımda değerler geliyor.

    Hata veren satırı kalın olarak işaretledim. neden olabilir? ugrasiyorum fakat bulamadım.

    db: oracle. derleyici: Spyder (Python 3.9 ile kullanıyorum)

    aşağıdaki linkten de inceleyebilirsiniz. satır 73.

    Jun 15 5:00 PM - Codeshare

     

    import sys

    import pandas as pd

    import numpy as np

    import cx_Oracle

     

    #cx_Oracle.init_oracle_client(lib_dir=r"C:\instant_client\instantclient_21_3")

     

    dsn_tns = cx_Oracle.makedsn('IP', 'Port', service_name='SN') 

    conn = cx_Oracle.connect(user=r'USR', password='PSW', dsn=dsn_tns)

    c = conn.cursor()

     

    def oku(filename, column="C", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varCPU = oku("Test.xlsx","C",7) #Processor Time

     

     

    def oku(filename, column="D", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varWT = oku("Test.xlsx","D",7) # Waiting Tasks

     

     

    def oku(filename, column="E", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varDBIO = oku("Test.xlsx","E",7) # Database I/O

     

     

    def oku(filename, column="F", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varBR = oku("Test.xlsx","F",7) # Batch Requests/Sec

     

     

    def oku(filename, column="H", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varMU = oku("Test.xlsx","H",7) # Memory Used

     

     

    def oku(filename, column="I", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varETH = oku("Test.xlsx","I",7) # Ethernet

     

    def oku(filename, column="J", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varUSC = oku("Test.xlsx","J",7) # Users Connections

     

     

    def oku(filename, column="L", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varFS = oku("Test.xlsx","L",7) # Datafile Sizes

     

    fsgb= "{}{}".format(varFS,"GB")

     

    print(varCPU)

    print(varWT)

    print(varDBIO)

    print(varBR)

    print(varMU)

    print(varETH)

    print(varUSC)

    print(fsgb)

     

    c.execute(

    """

    'SELECT SUM(ROUND(DBFiles.BYTES / 1024000)) Total

    FROM (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES

    FROM dba_data_files

    GROUP BY TABLESPACE_NAME) DBFiles,

    (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES,

    MAX(BYTES) largest

    FROM dba_free_space

    GROUP BY TABLESPACE_NAME) DBFree

    WHERE DBFiles.TABLESPACE_NAME = DBFree.TABLESPACE_NAME and DBFiles.TABLESPACE_NAME in ('NUCL_DATA','NUCL_NDX')

    """

    for row in c:

        print (row[0], '-', row[1])

     

    # -*- coding: utf-8 -*-

    import sys

    import pandas as pd

    import numpy as np

    import cx_Oracle

     

    #cx_Oracle.init_oracle_client(lib_dir=r"C:\instant_client\instantclient_21_3")

     

    dsn_tns = cx_Oracle.makedsn('IP', 'Port', service_name='SN') 

    conn = cx_Oracle.connect(user=r'USR', password='PSW', dsn=dsn_tns)

    c = conn.cursor()

     

    def oku(filename, column="C", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varCPU = oku("Test.xlsx","C",7) #Processor Time

     

     

    def oku(filename, column="D", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varWT = oku("Test.xlsx","D",7) # Waiting Tasks

     

     

    def oku(filename, column="E", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varDBIO = oku("Test.xlsx","E",7) # Database I/O

     

     

    def oku(filename, column="F", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varBR = oku("Test.xlsx","F",7) # Batch Requests/Sec

     

     

    def oku(filename, column="H", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varMU = oku("Test.xlsx","H",7) # Memory Used

     

     

    def oku(filename, column="I", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varETH = oku("Test.xlsx","I",7) # Ethernet

     

    def oku(filename, column="J", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varUSC = oku("Test.xlsx","J",7) # Users Connections

     

     

    def oku(filename, column="L", row=7):

        return pd.read_excel(filename, skiprows=row - 0, usecols=column, nrows=1, header=None, names=["Value"]).iloc[0]["Value"]

    varFS = oku("Test.xlsx","L",7) # Datafile Sizes

     

    fsgb= "{}{}".format(varFS,"GB")

     

    print(varCPU)

    print(varWT)

    print(varDBIO)

    print(varBR)

    print(varMU)

    print(varETH)

    print(varUSC)

    print(fsgb)

     

    c.execute(

    """

    'SELECT SUM(ROUND(DBFiles.BYTES / 1024000)) Total

    FROM (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES

    FROM dba_data_files

    GROUP BY TABLESPACE_NAME) DBFiles,

    (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES,

    MAX(BYTES) largest

    FROM dba_free_space

    GROUP BY TABLESPACE_NAME) DBFree

    WHERE DBFiles.TABLESPACE_NAME = DBFree.TABLESPACE_NAME and DBFiles.TABLESPACE_NAME in ('NUCL_DATA','NUCL_NDX')

    """

    for row in c:

        print (row[0], '-', row[1])

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayd
    ayd's avatar
    Kayıt Tarihi: 21/Eylül/2019
    Erkek

    yok mu yardımcı olacak bir kişi?

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lazz
    lazz's avatar
    Kayıt Tarihi: 15/Ekim/2007
    Erkek

    select in başında ' işareti var pyton bilmiyorum ama orda olması hata gıbı duruyor

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayd
    ayd's avatar
    Kayıt Tarihi: 21/Eylül/2019
    Erkek

    yok abi olması gerekiyor da hallettim.

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek

    c execute fonksiyonunun parantezini kapatmamışsın.

     

    c.execute(

    """

    'SELECT SUM(ROUND(DBFiles.BYTES / 1024000)) Total

    FROM (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES

    FROM dba_data_files

    GROUP BY TABLESPACE_NAME) DBFiles,

    (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES,

    MAX(BYTES) largest

    FROM dba_free_space

    GROUP BY TABLESPACE_NAME) DBFree

    WHERE DBFiles.TABLESPACE_NAME = DBFree.TABLESPACE_NAME and DBFiles.TABLESPACE_NAME in ('NUCL_DATA','NUCL_NDX')

    """

    )

    for row in c:

        print (row[0], '-', row[1])


    Acı Çekene Saygı
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayd
    ayd's avatar
    Kayıt Tarihi: 21/Eylül/2019
    Erkek
    FrodoTheYuzuksuz bunu yazdı

    c execute fonksiyonunun parantezini kapatmamışsın.

     

    c.execute(

    """

    'SELECT SUM(ROUND(DBFiles.BYTES / 1024000)) Total

    FROM (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES

    FROM dba_data_files

    GROUP BY TABLESPACE_NAME) DBFiles,

    (SELECT TABLESPACE_NAME, SUM(BYTES) BYTES,

    MAX(BYTES) largest

    FROM dba_free_space

    GROUP BY TABLESPACE_NAME) DBFree

    WHERE DBFiles.TABLESPACE_NAME = DBFree.TABLESPACE_NAME and DBFiles.TABLESPACE_NAME in ('NUCL_DATA','NUCL_NDX')

    """

    )

    for row in c:

        print (row[0], '-', row[1])

    evet, sorgunun sonunda kapatarak demiyordum, dalgınlık. Tırnaklardan sonra kapatınca düzeldi şimdi cx_oracle ile ilgili farkı sorun var:)

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek

    cx_oracle ilgili sorunun malum olmasını mı bekleyeceğiz şimdi? Söylesene abi problemi :D


    Acı Çekene Saygı
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayd
    ayd's avatar
    Kayıt Tarihi: 21/Eylül/2019
    Erkek
    FrodoTheYuzuksuz bunu yazdı

    cx_oracle ilgili sorunun malum olmasını mı bekleyeceğiz şimdi? Söylesene abi problemi :D

    mobilden yazdim, pc basinda degildim:) asagidaki hatayi veriyor.


    File ~\Desktop\Excel.py:7 in <module>
    cx_Oracle.init_oracle_client(lib_dir=r"C:\instant_client\instantclient_21_3")

    ProgrammingError: Oracle Client library has already been initialized

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek

    Anladım abi :D 

     

    GitHub da flaan baktım da try bloğunu kullanın diyor

     

    7. satırı şu şekilde değiştirin;

    try:
      	cx_Oracle.init_oracle_client(lib_dir=r"C:\instant_client\instantclient_21_3")
    except:
    		pass



     

    Girinti bozuluyor, sen düzenlersin hocam.


    Acı Çekene Saygı
Toplam Hit: 1393 Toplam Mesaj: 9
python oracle sorgu hatası