python3.8 save stock list to db

# coding=utf-8
import os
import sys
sys.path.append('..')
#sys.path.append('../code_pub')
import csv
import code_pub.api_sqlite

server_root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

global stocks
create_teble_sql='''
             create table  if not exists stock(
                [id] integer primary key autoincrement,
                [code] varchar(8),
                 [name] varchar(20),                
                 [date] datetime
                )
             '''
def init_db_sqlite():
    global stocks
    stocks = code_pub.api_sqlite.c_create_db(db_name="stock_code")
    stocks.conn_db()
    stocks.create_table(create_teble_sql)





def deal_data(code1, name1, date_start1):
    code = code1.strip()
    print(type(code))
    name = name1.strip()
    date = date_start1.strip()
    #share_total = share_total1.strip()
    #share_outstanding = share_outstanding1.strip()
    sql = 'select * from stock where code = "%s" ' % (code)
    print(sql)
    info = stocks.search_info(search_sql=sql)
    cnt = 0
    for i in info:
        print(i,type(i[0]),i[0])
        name_find = i[2]
        cnt+=1
    #l = info
    #cnt = len(list(info))
    print(type(info), code)
    print(len(list(info)), type(len(list(info))))
    #for i in info:
    #    print(i,type(i[0]),i[0])
    #cnt = len(list(info))
    print (type(cnt),cnt,"cnt", len(list(info)))
    if (1 == cnt):
        print("------uptime name-------")
        #for i in l:
        #    print(i)
        #l = stocks.find_one({"code": code})
        #for i in l:
         #   print i.get("name")
        #    print i.get("code")
        #name_find = l.get("name")
        #for i in l:
        #    name_find = i[1]
        #    print(name_find, type(name_find), type(i[1]))
            # print(i,type(i[0]),i[0])
        #name = "adc3"
        #str.decode("g18030") == str.decode("utf8")
        #if (0 != cmp(name, name_find)):
        print(type(name),name, type(name_find), name_find)
        if (name != name_find):
        #if (name.decode("utf8") != name_find.decode("utf8")):
            sql = 'update stock set name = "%s" where code = "%s" ' % (name, code)
            print(sql)
            stocks.update_info(update_sql=sql)
            #stocks.update({"code":code}, {"$set":{"name":name, "date_start":date_start, "share_total":share_total ,"share_outstanding":share_outstanding}})
            print ("------update name-------", name, name_find)
            #stocks.update({"code": "123456"}, {$set:{"name": "babc123"}})
    elif (0 == cnt):
        print ("------insert name-------")
        #stocks.insert({"code": code, "name": name, "date_start":date_start, "share_total":share_total ,"share_outstanding":share_outstanding})
        sql = 'insert into stock (code, name, date) values ("%s", "%s", "%s" )' % (code, name, date)
        print(sql)
        stocks.update_info(update_sql=sql)
    else:
        print ("------remove name-------", cnt)
        #stocks.remove({"code": code})
        #stocks.insert({"code": code, "name":name, "date_start":date_start, "share_total":share_total ,"share_outstanding":share_outstanding})
        sql = 'delete from stock where code = "%s"' % (code)
        print(sql)
        stocks.update_info(update_sql= sql)
        sql = 'insert into stock (code, name, date) values ("%s", "%s", "%s" )' % (code, name, date)
        print(sql)
        stocks.update_info(update_sql= sql)

def get_stock_list_sh():
    list_name = ['sha.csv', 'shb.csv', 'shk.csv']
    for name in list_name:
        try:
            name2 = '%s/file_stock/%s' % (server_root_path, name)
            print(name2)
            csvfile = open(name2, 'rt')
            reader = csv.reader(csvfile)

            for line in reader:
                try:
                    # 忽略第一行
                    if reader.line_num == 1:
                        continue
                    #list_code.append(line[0])
                    # print(' said: ', '')
                    i = 2
                    print (line[i], line[i+1], line[i+2])
                    deal_data(line[i], line[i+1], line[i+2])

                except ValueError:
                    pass
            print ("name --",name, locals())
            # csvfile.close()
        except IOError as err:  # 使用as将异常对象,并将其赋值给一个标识符
            print('File Error:' + str(err))  # ‘+’用于字符串直接的连接

        finally:
            if 'csvfile' in locals():
                csvfile.close()
                print ("close")

def get_stock_list_sz():
    list_name = ['sza.csv']
    for name in list_name:
        try:
            name2 = '%s/file_stock/%s' % (server_root_path, name)
            print(name2)
            csvfile = open(name2, 'rt')
            reader = csv.reader(csvfile)

            for line in reader:
                try:
                    # 忽略第一行
                    if reader.line_num == 1:
                        continue
                    #list_code.append(line[0])
                    # print(' said: ', '')
                    i = 5
                    j = 5
                    #print line
                    print ("a---",line[i], line[i + 1], line[i + 2], line[i + 3], line[i + 4])
                    print ("b---",line[i + j], line[i + 1+ j], line[i + 2+ j], line[i + 3+ j], line[i + 4+ j])
                    #'''
                    if ('' != line[i]):
                        deal_data(line[i], line[i + 1], line[i + 2])
                    #print line[i + j]
                    '''
                    if ('' != line[i + j]):
                        print ("-------------------sz---------b-----------------",line[i + j])
                        deal_data(line[i + j], line[i + 1+ j], line[i + 2+ j])
                        '''
#'''
                except ValueError:
                    pass
            print ("anme2 ---", name, locals())
            # csvfile.close()
        except IOError as err:  # 使用as将异常对象,并将其赋值给一个标识符
            print('File Error:' + str(err))  # ‘+’用于字符串直接的连接

        finally:
            if 'csvfile' in locals():
                csvfile.close()
                print ("close")
def get_stock_list_szb():
    list_name = ['szb.csv']
    for name in list_name:
        try:
            name2 = '%s/file_stock/%s' % (server_root_path, name)
            print(name2)
            csvfile = open(name2, 'rt')
            reader = csv.reader(csvfile)

            for line in reader:
                try:
                    # 忽略第一行
                    if reader.line_num == 1:
                        continue
                    #list_code.append(line[0])
                    # print(' said: ', '')
                    i = 10
                    j = 5
                    #print line
                    print ("a---",line[i], line[i + 1], line[i + 2], line[i + 3], line[i + 4])
                    print ("b---",line[i + j], line[i + 1+ j], line[i + 2+ j], line[i + 3+ j], line[i + 4+ j])
                    #'''
                    if ('' != line[i]):
                        deal_data(line[i], line[i + 1], line[i + 2])
                    #print line[i + j]
                    '''
                    if ('' != line[i + j]):
                        print ("-------------------sz---------b-----------------",line[i + j])
                        deal_data(line[i + j], line[i + 1+ j], line[i + 2+ j])
                        '''
#'''
                except ValueError:
                    pass
            print ("anme2 ---", name, locals())
            # csvfile.close()
        except IOError as err:  # 使用as将异常对象,并将其赋值给一个标识符
            print('File Error:' + str(err))  # ‘+’用于字符串直接的连接

        finally:
            if 'csvfile' in locals():
                csvfile.close()
                print ("close")
if __name__ == '__main__':
    init_db_sqlite()
    get_stock_list_sh()
    get_stock_list_sz()
    get_stock_list_szb()
    stocks.close_db()```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值