Я пытаюсь вставить/обновить df в таблицу mysql. Я получаю эту ошибкуINSERT SELECT * FROM ON DUPLICATE Результаты с ошибкой 1136
"_mysql_exceptions.OperationalError: (1136, "Column count doesn't match value count at row 1")"
на строке выполнения в приведенном ниже коде. Любые предложения по обходному пути или более эффективному пути?
db = MySQLdb.connect(
host = "myhost",
user = "username",
passwd = "password",
db = "mydb",
charset='utf8'
)
df.to_sql(con=db, name='t', if_exists='replace', flavor='mysql')
sqlStatement = """INSERT INTO db.films SELECT t.* FROM db.t
ON DUPLICATE KEY UPDATE
films.releasedP=t.releasedP,
films.runtimeP=t.runtimeP,
films.imdbRatingP=t.imdbRatingP,
films.votesYearP=t.votesYearP,
films.years=t.years,
films.votesYear=t.votesYear
;"""
cursor = db.cursor()
cursor.execute(sqlStatement)
db.commit()
Это схема таблиц, в которые я пытаюсь вставить/обновить данные.
DESCRIBE db.t;
+----------------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+-------------+------+-----+---------+-------+
| Title | varchar(63) | YES | | NULL | |
| imdbID | varchar(63) | YES | | NULL | |
| Released | varchar(63) | YES | | NULL | |
| Runtime | varchar(63) | YES | | NULL | |
| imdbRating | varchar(63) | YES | | NULL | |
| imdbVotes | varchar(63) | YES | | NULL | |
| releasedDateTime | datetime | YES | | NULL | |
| maxDateTime | datetime | YES | | NULL | |
| years | float | YES | | NULL | |
| votesYear | float | YES | | NULL | |
| rating | float | YES | | NULL | |
| runtimeF | float | YES | | NULL | |
| releasedP | float | YES | | NULL | |
| runtimeP | float | YES | | NULL | |
| imdbRatingP | float | YES | | NULL | |
| votesYearP | float | YES | | NULL | |
+----------------------------+-------------+------+-----+---------+-------+
DESCRIBE db.films;
+----------------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------+-------------+------+-----+---------+-------+
| Actors | varchar(63) | YES | | NULL | |
| Awards | varchar(63) | YES | | NULL | |
| Country | varchar(63) | YES | | NULL | |
| Director | varchar(63) | YES | | NULL | |
| Genre | varchar(63) | YES | | NULL | |
| Language | varchar(63) | YES | | NULL | |
| Metascore | varchar(63) | YES | | NULL | |
| Plot | varchar(63) | YES | | NULL | |
| Poster | varchar(63) | YES | | NULL | |
| Rated | varchar(63) | YES | | NULL | |
| Released | varchar(63) | YES | | NULL | |
| Response | varchar(63) | YES | | NULL | |
| Runtime | varchar(63) | YES | | NULL | |
| Title | varchar(63) | YES | | NULL | |
| Type | varchar(63) | YES | | NULL | |
| Writer | varchar(63) | YES | | NULL | |
| Year | varchar(63) | YES | | NULL | |
| imdbID | varchar(63) | YES | UNI | NULL | |
| imdbRating | varchar(63) | YES | | NULL | |
| imdbVotes | varchar(63) | YES | | NULL | |
| years | float | YES | | NULL | |
| votesYear | float | YES | | NULL | |
| rating | float | YES | | NULL | |
| runtimeF | float | YES | | NULL | |
| releasedP | float | YES | | NULL | |
| runtimeP | float | YES | | NULL | |
| imdbRatingP | float | YES | | NULL | |
| votesYearP | float | YES | | NULL | |
| releasedDateTime | datetime | YES | | NULL | |
| maxDateTime | datetime | YES | | NULL | |
+----------------------------+-------------+------+-----+---------+-------+
Что такое схема для таблицы 'db.t'? Является ли швы, что две схемы таблицы не совпадают. –