首页 > 解决方案 > (多问) Python 脚本对比 MsSQL 工作台 错误代码:2013。在查询期间丢失与 MySQL 服务器的连接;和唯一索引

问题描述

一点背景知识,我正在建立一个股票价格数据库进行分析(如果这不是最好的方法,请告诉我)。我正在使用 MySql 并运行 python 脚本,尽管mysql.connector我有一个prices看起来有点像这样的表。

CREATE TABLE `Prices` (
  `id` int PRIMARY KEY AUTO_INCREMENT,
  `date_id` int,
  `ticker_id` int,
  `Open` decimal(6,2),
  `Close` decimal(6,2),
  `High` decimal(6,2),
  `Low` decimal(6,2),
  `Volume` int,
  `Adj_Open` decimal(6,2),
  `Adj_Close` decimal(6,2),
  `Adj_High` decimal(6,2),
  `Adj_Low` decimal(6,2),
  `Adj_Volume` decimal(6,2)
);

到目前为止,我只在其中存储了 Apple 的价格,并且它有超过 10000 个条目。我试图从 Mysql Workbench 中选择/显示表格,但不断得到Error Code: 2013. Lost connection to MySQL server during query. 当我试图截断表格时也会发生同样的事情。我什至按照 StackOverflow 帖子中的建议将超时时间从 30 秒增加到 600 秒,但我仍然遇到同样的错误。

当我在 python 中运行以下命令时

def print_table(name):
    mycursor = mydb.cursor()
    text ="SELECT * FROM " + name
    mycursor.execute(text)
    myresult = mycursor.fetchall()
    for i in myresult:
        print(i)
    mycursor.close()

#print table prices
print_table("prices") 

不需要 2 秒,我可以打印出整个表格内容。是否需要更改其他设置才能让我在工作台中运行这些查询而不会出错。

第二个问题:我想有一个基于表中 2 列的唯一键,date_idticker_id该如何设置它。因此,当我将来更新表格时,以下代码无需输入相同的日期和价格两次即可工作。

sql = "INSERT IGNORE INTO prices (date_id,ticker_id,open,close,high,low,volume) VALUES (%s,%s,%s,%s,%s,%s,%s)"
mycursor.execute(sql,(date_id,ticker_id,p_open, p_close,p_high,p_low,p_volume))

标签: pythonmysqlmysql-workbenchmysql-python

解决方案


推荐阅读