1. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Lendo Json e gravando SQL Server

Discussão em 'Python' iniciado por lm1979, Agosto 8, 2022.

  1. lm1979

    lm1979 Membro Participativo

    Boa tarde pessoal,
    Estou com a seguinte situação.
    - Estou acessando uma API que retorno um JSON e preciso gravar os dados que a API retornou em um banco de dados SQL Server.

    Estou usando o código abaixo, mas está retornando erro.

    from turtle import st
    from urllib import request
    import requests
    import pyodbc
    import json

    request = requests.get('http://SRVAPI:8280/api/cdp/v1/getCliente')

    addressData = request.json()

    server = 'SRVBanco'
    dataBase = 'DWSimu'
    userName = 'sa'
    passWord = 'senha'

    conexao = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+dataBase+';UID='+userName+';PWD='+ passWord)

    cursor = conexao.cursor()
    cursor.execute(""""
    INSERT INTO cliente (cliente_id, nome_abrev, nome)
    VALUES (?,?,?)""", json.dumps(addressData['items']))
    cursor.commit()
    cursor.close()

    Erro que o Python retorna:
    File "c:\Projetos\api\getCliente.py", line 19, in <module>
    cursor.execute(""""
    pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')
  2. lm1979

    lm1979 Membro Participativo

    Pessoal, tente de outra forma, mas ainda está dando erro.

    from optparse import Values
    from turtle import st
    from urllib import request
    import requests
    import pyodbc
    import json
    import textwrap

    request = requests.get('http://SRVAPI:8280/api/cdp/v1/getCliente')

    addressData = request.json()
    jsonString = json.dumps(addressData['items'])

    server = 'SRVBanco'
    dataBase = 'DWSimu'
    userName = 'sa'
    passWord = 'senha'

    conexao = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+dataBase+';UID='+userName+';PWD='+ passWord)

    cursor = conexao.cursor()

    for index, row in enumerate(jsonString):

    insertQuery = textwrap.dedent('''
    INSERT INTO cliente (cliente_id, nome_abrev, nome)
    VALUES (?, ?, ?);
    ''')

    values = (row[0], row[1], row[2])

    cursor.execute(insertQuery, values)

    conexao.commit()

    cursor.close()
    conexao.close()

    Erro apresentado.
    Traceback (most recent call last):
    File "c:\Projetos\api\getCliente.py", line 30, in <module>
    values = (row[0], row[1], row[2])
    IndexError: string index out of range

Compartilhe esta Página