python读股票列表资料

有可用的数据接口了,就要有股票列表资料,搜索网上资料后,原来可以用python读股票列表资料, 我的广发证据系统【T0002\hq_cache】目录下的szex.tnf和shex.tnf.

代码摘自网上,及修改了.

以下数据库
ticker.sql

CREATE TABLE IF NOT EXISTS `ticker` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `stockid` char(6) CHARACTER SET latin1 NOT NULL,
  `name` char(20) DEFAULT NULL,
  `market` enum('sz','sh','hk') CHARACTER SET latin1 DEFAULT NULL,
  `code` char(12) CHARACTER SET latin1 DEFAULT NULL,
  `kind` enum('stock','index','option','futures') CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

getstockdata.py

#-*- encoding: utf-8 -*-
import struct

class TStock:
    def getListSz(self):
       """读取列表数据"""
       f = open('szex.tnf','rb')
       f.seek(50)
       datacode = []
       ss = f.read(250)
       #print ss
       while ss<>'':
            datacode.append((ss,ss,ss))
            ss = f.read(250)
       f.close()
       return datacode


    def getListSh(self):
       """读取列表数据"""
       f = open('shex.tnf','rb')
       f.seek(50)
       datacode = []
       ss = f.read(250)
       #print ss
       while ss<>'':
            datacode.append((ss,ss,ss))
            ss = f.read(250)
       f.close()
       return datacode

stocklist2db.py

#-*- encoding: utf-8 -*-
import sys,re
import MySQLdb
from getstockdata import TStock
reload(sys)
sys.setdefaultencoding('gbk')

def strip(str):
   pat = re.compile('\x00*([^\x00].*[^\x00])\x00*')
   a = pat.search(str)
   if a: return a.groups()
   else: return '-'


dClass = TStock()
dataSz = dClass.getListSz()
dataSh = dClass.getListSh()

try:
    conn = MySQLdb.connect (host ="localhost",user="root",passwd="123456789",db="stock")
except MySQLdb.Error, e:
    print str(e)
    sys.exit(1)
try:
    cursor = conn.cursor()
    cursor.execute("SET NAMES 'utf8'; ")

    for code in dataSz:
        ss=code
        xaa=ss[0][0:6]
	xbb=ss[0][24:32]
	xbb=xbb.decode('cp936').encode('utf8')
	xcc=ss[0][241:245]
	#xcc=strip(xcc)
	isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sz',code ='"+ xcc+ "'"
	print isql
	cursor.execute(isql)

    for code in dataSh:
        ss=code
        xaa=ss[0][0:6]
	xbb=ss[0][24:32]
	xbb=xbb.decode('cp936').encode('utf8')
	xcc=ss[0][241:245]
	#xcc=strip(xcc)
	isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sh',code ='"+ xcc+ "'"
	print isql
	cursor.execute(isql)
	
    cursor.close()
except MySQLdb.Error, e:
    print str(e)
    sys.exit(1)

conn.commit()
conn.close()

现在得到列表了,等下就是看看怎样整合了.

关于无聊人

一个无聊人而已
此条目发表在python分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注