我在sql中创建了一个测试表,其信息模式如下所示:
现在,我使用python脚本提取此信息,其代码如下所示:
import pandas as pd
import mysql.connector
db = mysql.connector.connect(host="localhost", user="root", passwd="abcdef")
pointer = db.cursor()
pointer.execute("use holdings")
x = "Select * FROM orders where tradingsymbol like 'TATACHEM'"
pointer.execute(x)
rows = pointer.fetchall()
rows = pd.DataFrame(rows)
stock = rows[1]
生产表包含200个唯一的交易符号,其模式与测试表类似
我对以下声明表示怀疑:
x = "Select * FROM orders where tradingsymbol like 'TATACHEM'"
我将不得不将tradingsymbols的值替换200倍,这是无效的
有没有一个有效的方法来做到这一点
如果我理解正确,您的问题是您希望避免对每个交易符号发送多个查询,对吗?在这种情况下,下面的MySQL IN可能会有所帮助。然后,您只需向包含所有所需TradingSymbol的数据库发送一个查询。如果你想用不同的交易符号做不同的事情,你可以选择熊猫的子集
另一个性能改进可能是pandas.read_sql,因为这在某种程度上加快了数据帧的创建
为了提高效率,还有两件事需要补充:
相关问题 更多 >
编程相关推荐