Решить ValueError: Истинное значение DataFrame неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all () - PullRequest
0 голосов
/ 09 апреля 2020

Я получаю это сообщение об ошибке, когда пытаюсь обновить или вставить данные в существующую таблицу базы данных. Выбор из него работает нормально. Я использую pyms sql в качестве моего соединения.

тестовые данные, которые я сейчас пытаюсь вставить, это

data = {
    'First Column Name': ['1900-01-01_01'],
    'Second Column Name': ['1900-01-01'],
    'Third Column Name': [90]
}
# declaring my dataframe: 
df = pd.DataFrame(data, columns = ['First Column Name',
'Second Column Name',
'Third Column Name'] )

Так что мой вывод DataFrame выглядит следующим образом:

    First Column Name   Second Column Name  Third Column Name
0   1900-01-01_01       1900-01-01          90

Это мой курсор и мой conn (имя моих pyms sql .connect):

cursor = conn.cursor()
cursor.execute("""
                    insert into [test_db].[test].[test_table] (column1, column2, column3) values (%(First Column Name)s
                    , %(Second Column Name)s, %(Third Column Name)s)
               """, df)
#     conn.commit()

После выполнения кода выше я получаю эту ошибку ValueError:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-27-bc65531a7f27> in <module>
      7                     insert into [DASHBOARDS].[dbo].[Kalenderwochen] (Datum_KW, Datum, KW) values (%(First Column Name)d
      8                     , %(Second Column Name)d, %(Third Column Name)d)
----> 9                """, df)
     10 #     conn.commit()
     11 print("\nAktualisierung der Daten erfolgreich!!")

src\pymssql.pyx in pymssql.Cursor.execute()

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
   1477     def __nonzero__(self):
   1478         raise ValueError(
-> 1479             f"The truth value of a {type(self).__name__} is ambiguous. "
   1480             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
   1481         )

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

...