Как я могу исправить 07002 слишком мало параметров в этой программе? - PullRequest
0 голосов
/ 25 июня 2019

Попытка написать простую программу для анализа листов Excel, а затем сохранить данные в базе данных Access.

Я не совсем уверен, в чем проблема, я попытался переименовать параметры, дважды проверить орфографию,и т. д.

cursor.execute('select * from MSDB')
cursor.execute('''
    INSERT INTO MSDB ([SalesOrder], [SiteNumber], [SiteName], [Customer], [ShipDate])
    VALUES(SO, SNM, Custom, SD, SN)
              ''')
conn.commit()

else:
    continue

Это дает мне сообщение об ошибке:

pyodbc.Error: ('07002', '[07002] [Microsoft] [ODBC Microsoft Access Driver]Слишком мало параметров.Ожидаемый 5. (-3010) (SQLExecDirectW) ')

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Я заставил его работать, по какой-то причине мне нужно было конвертировать целые числа в числа с плавающей точкой.Вот последний бит кода, который работал для меня.

params = (SalesO.value, SiteNum.value, SiteN.value, Cust.value, ShipD.value)
    params = [float(x) if type(x) is int else x for x in params] #Convert all int items to floats
    conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Users\llippincott\Desktop\MS DB_be.accdb;')
    cursor = conn.cursor()
    cursor.execute('select * from MSDB')
    cursor.execute("INSERT INTO MSDB (SalesOrder, SiteNumber, SiteName, Customer, ShipDate) VALUES (?,?,?,?,?)", (params))
    conn.commit()
0 голосов
/ 26 июня 2019

вы можете использовать

sql = "INSERT INTO MSDB ([SalesOrder], [SiteNumber], [SiteName], [Customer],ShipDate])
VALUES (?,?,?,?,?)"
cursor.execute(sql,(SO, SNM, Custom, SD, SN))

это поможет вам

...