首页 > 解决方案 > 如何将日期插入mysql数据库

问题描述

我正在尝试将包含字符串值日期的数据流插入 mysql 数据库并遇到一个非常奇怪的问题。

我已经搜索了多个站点以寻找答案,但我没有发现任何人有类似的问题,因为这似乎是不可能的。

使用此代码,如果我尝试仅将流中的日期字段插入数据库,则它可以正常工作。

with open('/home/pi/examples/weather_log.csv', newline='') as csvfile:
    linereader=csv.reader(csvfile, delimiter=',')
    for row in linereader:
        l_rec_time=datetime.datetime.strptime(row[0],'%Y-%m-%d %H:%M:%S')
        data=l_rec_time
        sql="INSERT INTO reports (rec_time) VALUES ('%s',)"
        print(data)
        cursor.execute(sql,(data))

但是,如果我包含流中的任何其他字段(还有 15 个其他字段),我会收到错误消息。

with open('/home/pi/examples/weather_log.csv', newline='') as csvfile:
    linereader=csv.reader(csvfile, delimiter=',')
    for row in linereader:
        l_rec_time=datetime.datetime.strptime(row[0],'%Y-%m-%d %H:%M:%S')
        l_wnddir=int(row[1])
        data=l_rec_time
        sql="INSERT INTO reports (rec_time, wnddir) VALUES ('%s', '%s')"
        print(data)
        cursor.execute(sql,(data))
        db.commit()

我已经尝试了包含其他 15 个字段但没有提交日期的代码,并且它没有任何问题。如果我包含日期字段,则会收到以下错误:

Traceback (most recent call last):
  File "<pyshell#157>", line 9, in <module>
    cursor.execute(sql,(data))
  File "/home/pi/.local/lib/python3.5/site-packages/mysql/connector/cursor.py", line 551, in execute
    self._handle_result(self._connection.cmd_query(stmt))
  File "/home/pi/.local/lib/python3.5/site-packages/mysql/connector/connection.py", line 490, in cmd_query
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  File "/home/pi/.local/lib/python3.5/site-packages/mysql/connector/connection.py", line 395, in _handle_result
    raise errors.get_exception(packet)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2019-05-24 12:46:05'', '45')' at line 1

任何人都可以阐明这一点吗?这个错误一直让我抓狂,直到我决定一次向代码中添加一个字段。

标签: mysqlpython-3.5

解决方案


推荐阅读