Python Mysql insert在Windows而不是Linux上工作

Python Mysql insert在Windows而不是Linux上工作,python,mysql-python,Python,Mysql Python,因此,我试图每N秒通过API获取加密货币的价格,并将其存储在Python 3中的MySQL数据库中。到目前为止,我已经编写了这段代码 import requests import pymysql import json import threading def addEthPrice(): threading.Timer(11, addEthPrice).start() url = 'https://min-api.cryptocompare.com/' urlPri

因此,我试图每N秒通过API获取加密货币的价格,并将其存储在Python 3中的MySQL数据库中。到目前为止,我已经编写了这段代码

import requests
import pymysql
import json
import threading


def addEthPrice():
    threading.Timer(11, addEthPrice).start()
    url = 'https://min-api.cryptocompare.com/'
    urlPrice = 'https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC,ETH&tsyms=USD,EUR,GBP'
    login_data = dict(login='*', password='*')
    session = requests.session()
    r = session.post(urlPrice, data=login_data)
    print("Response Code: ", r, "\n")
    data = json.loads(r.content.decode())
    conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='*', db='eth')
    sql = "INSERT INTO price (date, ethGBP, ethUSD, ethEUR) VALUES(UTC_TIMESTAMP, %s, %s, %s)"
    params = (str(data['ETH']['GBP']),
              str(data['ETH']['USD']),
              str(data['ETH']['EUR']))
    try:
        with conn.cursor() as c:
            res = c.execute(sql, params)
            print(params)
            print("mysql response: ", res)
    finally:
        conn.close()

if __name__ == "__main__":
    addEthPrice()
现在,此代码在Windows上运行良好,并将其存储在数据库中以下是Windows表的说明:

+--------+---------------+------+-----+---------+-------+
| Field  | Type          | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| date   | timestamp     | YES  |     | NULL    |       |
| ethGBP | decimal(12,8) | YES  |     | NULL    |       |
| ethUSD | decimal(12,8) | YES  |     | NULL    |       |
| ethEUR | decimal(12,8) | YES  |     | NULL    |       |
+--------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
以下是Linux表的说明:

+--------+---------------+------+-----+-------------------+-----------------------------+ 
| Field  | Type          | Null | Key | Default           | Extra                       | 
+--------+---------------+------+-----+-------------------+-----------------------------+
| date   | timestamp     | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| ethGBP | decimal(12,8) | YES  |     | NULL              |                             |
| ethUSD | decimal(12,8) | YES  |     | NULL              |                             |
| ethEUR | decimal(12,8) | YES  |     | NULL              |                             | 
+--------+---------------+------+-----+-------------------+-----------------------------+                              
4 rows in set (0.04 sec) 
我使用了相同的语法来创建这两个表,但是Linux添加了参数

我的问题是,当我运行这些脚本时,数据会很好地添加到WAMP MySQL中,但不会添加到Linux MySQL版本中,为什么会这样,我如何才能使它在这两个版本上都工作

Linux version 5.7.18-0ubuntu0.16.04.1
Windows version MySQL5.7.14

谢谢。

您是如何创建这两个表的?创建表价格(日期时间戳、ethGBP十进制(12,8)、ethUSD十进制(12,8)、ether十进制(12,8))@你解决了这个问题吗。我有一个类似的问题。我想这是因为我没有在insert方法中使用backticks'`'。但那是很久以前的事了,所以我猜。你是如何创建这两个表的?创建表价格(日期时间戳,ethGBP十进制(12,8),ethUSD十进制(12,8),ethEUR十进制(12,8))@你解决了这个问题吗。我有一个类似的问题。我想这是因为我没有在insert方法中使用backticks'`'。但那是很久以前的事了,所以我猜。