第三课 上市公司财报数据库表格的建立

回顾一下:

第一课 我是怎样三天学会Python编程,从一无所知到掌握爬取和讯网上市公司财务报表做分析的----介绍了如何构建一个Python爬虫环境,Python+MySQL安装;

第二课、开心的爬虫之旅----具体分析目标数据表的构成,介绍了分析网页的必要工具;

今天这课是细化实现第二课的内容,实现建立目标数据的存放地点,即上市公司财报表格的建立。

已经为大家讲解了Python软件和MySQL的安装、基本的数据库操作和抓取网页的工具,另外分析了目标网站的数据结构。

数据来源,网站链接都已经很清楚了。

我们今天就动手实现完成上市公司三表的数据表的建立。

下面我一步步给你演示,同时请你也跟随我一步一步完成这些操作。

这些操作另一种做法就是写成程序,可以一次性完成它。

我这里只是为了方便为你解说加入相关内容,而采用了命令行的方式。

1、首先确保MySQL打开(ctrl+alt+del 启动任务管理器->查看服务 是否有mysql57正在运行)或者用下面语句直接做连接测试。

>>> import pymysql  ###导入MySQL链接函数库

>>> connect = pymysql.Connect( ###用Taylor007er用户连接MySQL

host='localhost',

port=3306,

user='Taylor007er',

passwd='007123',

charset='utf8')

>>>             ###这里没有收到如何错误提示,说明已经连上了。

2、建立一个实例名称是`hexun_mj`的数据库。

你把他们当成是一个EXCEL文件建好了,或者理 解成考勤表的木架子,一排排整整齐齐的,可以装很多考勤表,很多人会拿到自己的考勤表签到。现在是订做木架的工作。你可以建很多的架子,提供给不同的公司。

>>> sql ='CREATE SCHEMA `hexun_mj` DEFAULT CHARACTER SET gb2312 ;' ###这句话我以前是不懂的,需要的命令格式,打开MySQL Workbench,左边导航栏下面SCHEMAS点右键  Create Schemas...进去就可以,系统给出一下窗口,可以看到建立一个数据库的命令。我们就依样画葫芦。

>>> cursor = connect.cursor()

>>> cursor.execute(sql)

>>>           ###这里没有收到如何错误提示,说明数据库已经建好了。

>>>

上面这三句命令的格式应该记住,操作数据库会不断的使用这个组合。

3、打开这个新建的数据库,我们要往里添加三个表,用于存放上市公司财务三表。你可以把他们看成是EXCEL里的sheels,或者 理解成考勤表,很多人在上面签到。现在是打格子的工作 。你可以随时加空白考勤表进去。这是比喻,方便你能形象理解。在计算机里是一样的。

不同的是计算机里的考勤表可以考核的内容不局限于时间,还可以是日期、时间、数据、文 本、图片等等。

先建立一个利润表的空表。我们回看一下上次课总结的数据栏目是29项,这个最少。但我们不能蛮干,打29行不是人干的事,重复的工作交给机器完成它。

还是先看看别人是怎么建的表。还是用MySQL Workbench。我选了数据库world里的countrylanguage表,鼠标放在表名上有个黑色的感叹号。点开,看到中间出现countrylanguage表的info,我选到DDL,里面有建 立表格用的命令。可以借鉴。

看到这样的语句

CREATE TABLE `countrylanguage` (

    `CountryCode` char(3) NOT NULL DEFAULT '',

`Language` char(30) NOT NULL DEFAULT '',

`IsOfficial` enum('T','F') NOT NULL DEFAULT 'F',

`Percentage` float(4,1) NOT NULL DEFAULT '0.0',

    PRIMARY KEY (`CountryCode`,`Language`),

     KEY `CountryCode` (`CountryCode`),

     CONSTRAINT `countryLanguage_ibfk_1`

     FOREIGN KEY (`CountryCode`)

     REFERENCES `country` (`Code`)

)

    ENGINE=InnoDB DEFAULT

    CHARSET=latin1

我们抄它有用的部分。

组合成对利润表有帮助的。

表名是hexun_lrb我用了拼音第一个字母。

为了批量增加字段名,我参照了网页https://www.2cto.com/database/20140的例子

sql = "CREATE TABLE `hexun_mj`.`hexun_lrb` (

`hexun_gpdm` VARCHAR(6) NOT NULL,

`hexun_lrb_n1` VARCHAR(10));"

try:  ###try ... except一个容错机制,意思是试着做一些事如果有问题,就做例外的事情。

cursor.execute(sql)

except:

print('The table addfields exists!')

# add the fileds 批量增加字段

try:

    for i in range(28):

        sql = "ALTER TABLE `hexun_mj`.`hexun_lrb` ADD COLUMN `hexun_lrb_n%s` FLOAT NULL;" %(i+2)

        print (sql)

        cursor.execute(sql)

except Exception:

    print ('error')

类似的我们把资产负债表、现金流量表、财务比率表和MJ数字力分析都建起来

###资产负债表

sql = "CREATE TABLE `hexun_mj`.`hexun_zcfzb` (

`hexun_gpdm` VARCHAR(6) NOT NULL,

`hexun_zcfzb_n1` VARCHAR(10));"

try:  ###try ... except一个容错机制,意思是试着做一些事如果有问题,就做例外的事情。

cursor.execute(sql)

except:

print('The table add fields exists!')

# add the fileds 批量增加字段,这次是68个

try:

    for i in range(68):

        sql = "ALTER TABLE `hexun_mj`.`hexun_zcfzb` ADD COLUMN `hexun_zcfzb_n%s` FLOAT NULL;" %(i+2)

        print (sql)

        cursor.execute(sql)

except Exception:

    print ('error')

###现金流量表

sql = "CREATE TABLE `hexun_mj`.`hexun_xjllb` (

`hexun_gpdm` VARCHAR(6) NOT NULL,

`hexun_xjllb_n1` VARCHAR(10));"

try:  ###try ... except一个容错机制,意思是试着做一些事如果有问题,就做例外的事情。

cursor.execute(sql)

except:

print('The table add fields exists!')

# add the fileds 批量增加字段,这次是69个

try:

    for i in range(69):

        sql = "ALTER TABLE `hexun_mj`.`hexun_xjllb` ADD COLUMN `hexun_xjllb_n%s` FLOAT NULL;" %(i+2)

        print (sql)

        cursor.execute(sql)

except Exception:

    print ('error')

###财务比率

sql = "CREATE TABLE `hexun_mj`.`hexun_cwbl` (

`hexun_gpdm` VARCHAR(6) NOT NULL,

`hexun_cwbl_n1` VARCHAR(10));"

try:  ###try ... except一个容错机制,意思是试着做一些事如果有问题,就做例外的事情。

   cursor.execute(sql)

except:

    print('The table add fields exists!')

# add the fileds 批量增加字段,这次是88个字段

try:

    for i in range(88):

        sql = "ALTER TABLE `hexun_mj`.`hexun_cwbl` ADD COLUMN `hexun_cwbl_n%s` FLOAT NULL;" %(i+2)

        print (sql)

        cursor.execute(sql)

except Exception:

    print ('error')

###MJ数字力分析

sql = "CREATE TABLE `hexun_mj`.`hexun_mjszlfx` (

`hexun_gpdm` VARCHAR(6) NOT NULL,

`hexun_mjszlfx_n1` VARCHAR(10));"

try:  ###try ... except一个容错机制,意思是试着做一些事如果有问题,就做例外的事情。

   cursor.execute(sql)

except:

print('The table add fields exists!')

# add the fileds 批量增加字段,这次是45个

try:

    for i in range(45):

        sql = "ALTER TABLE `hexun_mj`.`hexun_mjszlfx` ADD COLUMN `hexun_mjszlfx_n%s` FLOAT NULL;" %(i+2)

        print (sql)

        cursor.execute(sql)

except Exception:

    print ('error')

#做正式的提交

connect.commit()

以上补充建立了上节课提到的五张报表的数据表。

请同学们对着下面的图看是不是已经在自己的电脑上成功建立了这5张表。

这两次课会比较细节,为了达成具体的实现,请保持耐心。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,219评论 4 16
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,639评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,811评论 0 11
  • 1.没有安装PyMysql,进行安装 pip3 install PyMysql 2.连接数据库 #! /usr/b...
    拖风传去的一份信阅读 977评论 0 2
  • 现代社会人与人之间的物质差距随着日益严重的阶层固化趋势只会越来越大,得益于互联网行业的发展信息知识获取是几...
    三山之山阅读 556评论 0 4