您的位置:首页 > 编程语言 > Python开发

20150805-20150807 tradeDate-----python

2015-08-07 14:16 691 查看
1、创建数据库(strategy)、表(trade_date 交易日)

create database strategy default character set utf8 collate utf8_general_ci;

CREATE TABLE `trade_date` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`day` varchar(8) NOT NULL ,
`year` varchar(4) NOT NULL,
`month` varchar(6) NOT NULL,
`desc` varchar(200),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

int:2147483647

long:9223372036854775807

2、接口功能(python实现):

a:计算从起始日期到当天的所有交易日【周六日除外】(数据库无关---起始日期为传入参数)

所用到的url资料:

url:http://blog.chinaunix.net/uid-26425155-id-3022902.html

http://outofmemory.cn/code-snippet/1841/python-time-date-module-usage-summary
/article/3793797.html

/article/4657881.html

http://blog.chinaunix.net/uid-26425155-id-3022902.html

/article/3793797.html

所需要的最有用资料:/article/4760642.html

http://outofmemory.cn/code-snippet/1840/python-usage-datetime-module-timedelta-achieve-date-time-xiangjia
b:trade_date数据库中数据补全功能

如果数据库为空:则插入从指定日期到当天的交易日数据

如果数据不为空,则做增量操作。(包括第二天新增第二天当天的交易日数据,或服务器停止几天后,向数据库中插入这段时间内的交易日数据)

url:

python中的mysql数据库操作:/article/4666294.html

python中的配置文件读取:http://blog.chinaunix.net/uid-24585858-id-4820471.html

python中全局变量:先定义变量A,在某方法中调用:global A 之后对A进行赋值。 别的方法中使用到A时都将是赋值之后的值。

python中的数据库操作事务处理:try...except...finally except时:rollback finally时:cur.close() conn.close()

python中的定时任务:分别为每天的新增操作和该方法执行时的定时操作。

每天定时任务执行:http://bbs.csdn.net/topics/390950625

思路:使用线程实现。run方法中。

执行操作 #系统启动当时执行操作

计算第二天设置的任务执行时间距离当前系统时间秒数。time.sleep(秒数)

执行操作 #系统启动第二天执行任务

while(True):

time,sleep(24*60*60) #等待一天

执行操作。

python中初始化时进行的操作:写入线程的init()方法中,在创建线程时执行操作。

python中MySQLdb中的线程池机制:DBUtils.Pooleddb

/article/5248083.html

报错:'module' object is not callable

原因:模块中的方法没有导入。 在eclipse中需要将DBUtils.PooledDB.PooledDB()方法导入,才可以执行PooledDB()

eclipse中将DBUtils.PooledDB.PooledDB 强制引入

在模块中引入语句:from DBUtils.PooledDB import PooledDB

安装MySQLdb后,命令行验证安装成功,但eclipse报错:unresolved 。解决:http://blog.csdn.net/ao_xue1234/article/details/8191974

需考虑的事情:

该表是否已经存在:可在创建表的语句执行之前通过show tables得到库中所有的表,判断是否已存在,若存在,才会执行创建。

向库中插入数据时,起始交易日需配置文件指定。

连接数据库的参数:需配置文件指定

向数据库插入数据时,mysql表主键的赋值。【因为新建表时设置主键为自动增长。所以,可以写sql语句时,指定insert into test(name1,name2,name3) values(val1,val2,val3) 这样就不需要为主键赋值了。但是如果字段很多时,就不适合。】

如果操作失败时的回滚,事务处理。

验证输入日期是否有效。try:...except:... 在try中对字符串进行向date转换,若抛异常,return False 表示验证不通过。

3、python引入模块操作:

python多个模块引入同一个模块时,并不会每次引入都重新载入这个模块。url:http://blog.chinaunix.net/uid-20684384-id-1895613.html

4、成品:

模块代码:

#coding=utf-8

import trade_date.TradeDate as td

if __name__ == "__main__":
print td.select_between_days("20150701", "20150806")


View Code
代码层级:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: