加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

python多进程写数据库案例

(2018-02-01 13:05:10)
分类: python笔记
#!/usr/bin/python
#coding:utf-8
import MySQLdb
from multiprocessing import Pool


#####将抓下来的数据写入数据库#######

def stock(m):
    if m[0]=='6':
        id='sh'+m
    else:
        id='sz'+m
     db = MySQLdb.connect(host="IP地址",
                         port=3307,
                          read_default_file="数据库配置文件目录",  # 由于修改了数据库默认存放目录,所以这里需要指定配置文件
                          user="数据库用户名",
                          passwd="数据库密码",
                          db="stock")  #stock为数据库名
 cur = db.cursor()  # 获取游标
    sql="create table %s(times varchar(20),tclose float,high float,low float,topen float,lclose float,chg float,pchg float,turnover float,voturnover DOUBLE,vaturnover DOUBLE,tcap DOUBLE,mcap DOUBLE)"%id
    cur.execute(sql)    #提交命令
    db.commit()         #执行命令

    with open("/stock/%s/%s.csv"%(m,m)) as f:
        a = f.readlines()
    for line in a[len(a)::-1]:
        if line.strip().decode("gbk").encode("utf-8").split(',')[3]=='收盘价':
            continue
        k=line.strip().decode("gbk").encode("utf-8").split(',')
        i=[]
        for j in k:
            if j=='None':
                j='0.0'
            i.append(j)
        TIMES=i[0]
        TCLOSE=i[3]
        HIGH=i[4]
        LOW=i[5]
        TOPEN=i[6]
        LCLOSE=i[7]
        CHG=i[8]
        PCHG=i[9]
        TURNOVER=i[10]
        VOTURNOVER=i[11]
        VATURNOVER=i[12]
        TCAP=i[13]
        MCAP=i[14]
    ##TCLOSE收盘价,HIGH最高价,LOW最低价,TOPEN开盘价,LCLOSE昨收盘价,CHG涨跌额,PCHG涨跌幅,
    ##TURNOVER换手率,VOTURNOVER成交量,VATURNOVER成交金额,TCAP总市值,MCAP流通市值
        sqlo="insert into %s values('%s','%f','%f','%f','%f','%f','%f','%f','%f','%f','%f','%f','%f')"%(id,TIMES,float(TCLOSE),float(HIGH),float(LOW),float(TOPEN),float(LCLOSE),float(CHG),float(PCHG),float(TURNOVER),float(VOTURNOVER),float(VATURNOVER),float(TCAP),float(MCAP))
        cur.execute(sqlo)    #提交命令
        db.commit()         #执行命令
    print '完成'+m
    cur.close()  # 关闭游标,释放内存
    db.close()  # 关闭连接




if __name__ == '__main__':
    with open('/stock/stockuptimequan.txt') as data:
        o = ''
        for n in data:
            o = o + (n[:6]) + ','
    q = o.split(",")[:-1]

    pool = Pool(processes =10) # 可以同时跑10个进程
    for i in q:
        pool.apply_async(stock,(i,))
    pool.close()
    pool.join()

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有