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')
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