Intereting Posts
Почему параметризованный SQL, сгенерированный NHibernate, так же быстро, как хранимая процедура? Измерение времени выполнения sql в приложении Java ms-access – как автоматически выбрать «Да» в предупреждающих сообщениях Как заставить SQL вырастить событие в SQL Client Как использовать другие поля таблицы в качестве критерия для MS Access Присоедините одну строку к нескольким строкам в другой таблице Oracle: несколько обновлений таблицы => ORA-01779: невозможно изменить столбец, который сопоставляется с таблицей, не содержащей ключей эквивалент generate_series () в DB2 Coldfusion – имя поля переменной при циклировании результатов запроса к базе данных Неожиданный EOF, встречающийся в BCP Может ли хранимая процедура / функция возвращать таблицу? Как использовать XPATH в MySQL? Регулярное выражение для REGEXP_SUBSTR в Oracle Функциональный индекс в SQL SERVER 2005 ВЫПОЛНИТЕ НЕМЕДЛЕННО в plsql

Могу ли я создать цикл для обновления базы данных SQL?

У меня 6 таблиц в моем файле sql.db И мне было интересно, можно ли создать цикл для прохождения каждого столбца в этих 6 таблицах и преобразовать значения в NULL если значение ячейки -

Код, который я сейчас имею

 for each_item in df.index: # Note: The name of the tables in the database is the variable 'each_item' pd.Dataframe.to_sql(df, con=engine, name=each_item, if_exists='append', index=False) # The below code does not work. And I have no idea why for each_columns in df.columns: connection.execute('UPDATE each_item SET each_columns = NULL WHERE each_columns = '-') 

Кажется, это порождает ошибку.

Как мне его кодировать так, чтобы я мог просматривать все tables в sql.db и обновлять каждый column в tables , если значение ячейки = - ?

Чтобы быть более конкретным, ошибка, которую я получил, говорит о том, что она не может найти таблицу. no such table: each_item

Хорошо, в вашем коде есть немало проблем. Давайте обратимся каждый раз за раз:

  1. pd.DataFrame.to_sql означает your_dataframe.to_sql в этом случае, df.to_sql . Это метод объекта DataFrame , и этот объект является DataFrame вами DataFrame . Если это вас смущает, прочитайте о классах и методах в Python.
  2. to_sql принимает свой первый аргумент как имя таблицы, затем соединение, затем имя схемы и, наконец, if_exists и индекс kwag
  3. Было бы лучше, если бы вы сделали все преобразования, прежде чем пытались написать SQL. Это просто делает вещи чище. Кроме того, если вы правильно дешифруете DataFrame, значения NaN автоматически преобразуются в соответствующее представление значения NULL для рассматриваемого механизма базы данных.

Если вы рассмотрите все пункты выше, вот как это должно быть сделано:

 for each_item in df.index: # I would avoid a syntax like this. Better to have the DataFrames in a list, than iterate through a DataFrame df.loc[each_item].to_sql(name=each_item, con=engine, if_exists='append', index=False) # Here again, I would avoid using the name engine for a connection to a database engine 

Тем не менее, успех вышеуказанного кода зависит от того, что ваш DataFrame правильно набрал данные, и я завершаю это не потому, что вы задали этот вопрос. Если вы отредактируете свой вопрос с образцом вашего DataFrame, я смогу помочь вам правильно настроить ваши типы данных.


Ps. Если ваш DataFrame создается в результате вашего предыдущего вопроса о слиянии DataFrame, дайте мне знать, и я предоставлю вам комплексное решение для обоих вопросов здесь. Но отредактируйте этот вопрос с данными из этого вопроса, чтобы люди, читающие этот вопрос, не были в тупике.