我收到此错误消息:OperationalError: (1292, "Incorrect datetime value: '19/06/2020 13:15' for columntest1 .posts .posted_atat row 1") 我正在导入此代码:
OperationalError: (1292, "Incorrect datetime value: '19/06/2020 13:15' for column
.
at row 1")
with connection.cursor() as cur: q = """ INSERT INTO posts(postid, posted_at, num_comments, score, selftext, title, total_awards_received, upvote_ratio, id, subredditid) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ cur.executemany(q,postsdata) connection.commit()
进入这张表:
q = """ CREATE TABLE posts( postid INT NOT NULL, posted_at DATETIME, num_comments INT, score INT, selftext VARCHAR(10000), title VARCHAR(10000), total_awards_received INT, upvote_ratio DOUBLE, id INT, subredditid INT, PRIMARY KEY (postid), FOREIGN KEY (id) REFERENCES users(id), FOREIGN KEY (subredditid) REFERENCES subreddits(subredditid) ); """ cur.execute(q) connection.commit()
数据集第一行的值(假设发生错误的位置):
posted_at 19/06/2020 13:15
任何人都可以帮忙吗?这一直把我逼到墙边,我不明白为什么 mysql 不接受这个?
编辑-更多信息 这是我的数据框的样子:
postsdf = df[['postid', 'posted_at', 'num_comments', 'score', 'selftext', 'title', 'total_awards_received', 'upvote_ratio', 'id']] postsdf["subredditid"] = subredditsdfdrop["subredditid"] postsdf["subredditid"] = postsdf["subredditid"].fillna(value = 0) postsdata = postsdf.values.tolist()
然后我将“postsdata”列表传递到顶部的插入语句中。我被告知“posted_at”值的格式应该匹配YYYY-MM-DD hh:mm:ss[.fraction]。执行此操作的代码行是什么?
YYYY-MM-DD hh:mm:ss[.fraction]
问题是 MySQLDATETIME标准格式是YYYY-MM-DD hh:mm:ss[.fraction],而您使用的是以下格式:DD/MM/YYYY hh:mm. 为了解决此问题,您应该:
DATETIME
DD/MM/YYYY hh:mm
VARCHAR
STR_TO_DATE
前一种选择优于第二种选择,但如果您的输入数据被迫采用原始格式,总有办法。