Python Mysql insert在Windows而不是Linux上工作
因此,我试图每N秒通过API获取加密货币的价格,并将其存储在Python 3中的MySQL数据库中。到目前为止,我已经编写了这段代码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
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'`'。但那是很久以前的事了,所以我猜。