我试图实现的是将用python脚本生成的数据放入MySQL数据库。到目前为止,我已经能够用Python生成数据并将其打印出来,但是我不太确定如何将其放入mysql表中。我了解到可以使用MySQLdb作为两者之间的连接器,目前我已经能够将数据放入表中,但只能手动键入数据。你知道吗
希望代码有意义,但我正在尝试将BidSize、AskSize、BidPrice和AskPrice中的值放入表中。你知道吗
from wrapper_v3 import IBWrapper, IBclient
from swigibpy import Contract as IBcontract
if __name__=="__main__":
"""
This simple example returns streaming price data
"""
callback = IBWrapper()
client=IBclient(callback)
ibcontract = IBcontract()
ibcontract.secType = "FUT"
ibcontract.expiry="201612"
ibcontract.symbol="GE"
ibcontract.exchange="GLOBEX"
ans=client.get_IB_market_data(ibcontract)
print "Bid size, Ask size; Bid price; Ask price"
print ans
import MySQLdb as mdb
con = mdb.connect('localhost', 'testuser', 'test623', 'testdb');
with con:
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS Histdata")
cur.execute("CREATE TABLE Histdata(Id INT PRIMARY KEY AUTO_INCREMENT, \
Name VARCHAR(25), BidSize VARCHAR(20), AskSize VARCHAR(20), BidPrice VARCHAR(20), AskPrice VARCHAR(20))")
cur.execute("INSERT INTO Histdata(Name,BidSize,AskSize,BidPrice,AskPrice) VALUES('test','test','test','test','test'))")
将查询参数化如下:
正如编造者正确指出的,请参数化您的查询以防止SQL注入。你知道吗
但是,您没有看到写入表的数据的原因是您没有提交事务。您的游标正在向事务添加查询,但只有在您指示提交之后,数据才真正写入数据库。你知道吗
在添加光标查询以完成事务之后添加
con.commit()
。你知道吗在较早版本的MySQLdb适配器中,Python数据将自动提交。但这被认为是“糟糕的做法”,因为程序员对事务的控制应该得到尊重。这个流程也在Python的DB API中进行了阐述,所有数据库适配器都需要遵循这个流程。你知道吗
请注意:完成后,不要忘记关闭光标和连接:
否则,您的连接将在空闲状态下保持打开状态,并且可能耗尽连接插槽池。你知道吗
相关问题 更多 >
编程相关推荐