python - (多问) 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_id
我ticker_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))
解决方案
推荐阅读
- amazon-mws - 从 API 获取亚马逊 MWS 货件状态
- amazon-web-services - Dynamodb boto3 dynamodbstreams get_records
- javascript - 使用格式将表单复制到剪贴板
- javascript - 为子元素动态添加属性
- java - 使用 Recycle View 时无法在 Android Emulator 中看到应用程序栏
- c++ - SSE2 将压缩 RGB 转换为 RGBA 像素(每 3 个字节后添加第 4 个 0xFF 字节)
- javascript - 将 Firestore 文档添加到 observable
- javascript - 多个元素的 indexOf() 方法的替代方法
- python - 了解类以及导致此属性错误的原因
- buildkite - Buildkite如何在docker代理中挂载单个文件