股票数据存csv还是mysql

股票数据存csv还是mysql,第1张

股票数据存csv。CSV,英文原文为:Comma(逗号)-Separated(分割)Values(数值),有时也称为字符分隔值,CSV文件格式的通用标准并不存在,但是在RFC4180中有基础性的描述。使用的字符编码同样没有被指定,但是bitASCII是最基本的通用编码。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import tushare as ts

from sqlalchemy import create_engine

code_list = []

#数据库链接参数

host = '10.0.0.5'

port = 3306

user = 'root'

password = 'qweqwe'

database = 'stock'

charset = "utf8"

table = "stock_data"

# create table stock_data(id int auto_increment,code int(6) zerofill,date date not null,open decimal(10,2) not null,high decimal(10,2) not null,close decimal(10,2) not null,low decimal(10,2) not null,volume decimal(10,2),turnover decimal(10,2),primary key (id),index(code),index(date),index(open),index(high),index(close),index(low))

def get_data (code):

df = ts.get_hist_data(code)

data = df.iloc[::-1, [0, 1, 2, 3, 4, 13]]

data["code"] = code

return data

def save_data_to_mysql (data,user = 'root',password = 'qweqwe',database = 'stock',charset = "utf8",table = "stock_data"):

engine = create_engine('mysql://' + user + ':' + password + '@' + host + '/' + database + '?charset=' + charset)

data.to_sql(table, engine, if_exists='append')

return

for code in code_list:

try:

data = get_data(code)

save_data_to_mysql(data)

print str(code) + "导入mysql成功"

except:

print str(code) + "获取数据失败"

对于游戏币等代币,一般存储为int类型是可行的。问题在于越界,int类型长度为11位。

在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。

Decimal:Decimal为专门为财务相关问题设计的数据类型

DECIMAL从MySQL5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL5.1中,参量的取值范围如下:M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M的默认值是10。

D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。

如DECIMAL(5,2)的最大值为9999.99,因为有7个字节可用。能够解决数据的范围和精度的问题。

扩展资料

MySQL数据类型DECIMAL用法:

MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。

要定义数据类型为DECIMAL的列,请使用以下语法:column_name  DECIMAL(P,D)

在上面的语法中:

P是表示有效数字数的精度。 P范围为1〜65。

D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。

DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。

与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZEROFILL属性。如果使用UNSIGNED属性,则DECIMALUNSIGNED的列将不接受负值。

如果使用ZEROFILL,MySQL将把显示值填充到0以显示由列定义指定的宽度。另外,如果我们对DECIMAL列使用ZEROFILL,MySQL将自动将UNSIGNED属性添加到列。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7597342.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存