首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

已经为大家讲解了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张表。

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180228G00V1H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券