It is better to be clear than to be clever
接上一篇文章,配置好环境之后,就可以愉快的做事情啦!
1、选择postgresql数据库
这里选择postgresql数据库,原因如下:
a、单位使用(所有技术都应服从项目任务);
b、相较于mysql,有一定的优势(不再赘述)。
2、在anaconda中使用postgresql数据库
上一篇文章讲解了如何将python与postgresql连接。
接下来就可以开始向数据库中插入数据表了。
3、使用python将数据表插入数据库当中
废话不说,先上代码。
import psycopg2
conn = psycopg2.connect(
database = 'test',
user = 'postgres',
password = '123456',
host = '127.0.0.1',
port = 5432
)
curs = conn.cursor()
curs.execute(
'''
create table 股票曾用名2(
ts_code varchar(10),
name varchar(30),
start_date varchar(20),
end_date varchar(20),
change_reason varchar(30)
);
'''
)
conn.commit()
conn.close()
可以看出,连接数据库,与sqlite和mysql并无任何不同。
一定要记得提交commit()。
现在进入pgAdmin4,可以看到
可以看到,股票曾用名2,已经被成功创建了。
可以使用select * from 股票曾用名2以查看所创建的列名。
4、数据的获取
数据表创建好了,要想往数据表中写入数据,首先就得获取数据。
这时候就比较头疼了,从哪找数据呢,总不能自己一条一条的添加吧。
为了方便起见,我用了曾经玩过的tushare提供的接口来获取数据。
tushare是一个python的第三方库,提供了数据接口,以方便金融从业者提取股票等的数据,不过现在很多都要积分了,很多数据新手就不能获得了。
每一个问题都会牵引着其它问题,怎么引入tushare包呢?
首先,在anaconda3文件夹中找到Anaconda Promote,进入命令行。
直接输入pip install tushare就好啦,当然,我发现就是装上了,在anaconda软件的enviroment也是看不到的,但这并不会影响你的使用。
现在就可以快乐import tushare啦!
然后,又出问题啦,会提示你权限错误,乖乖的去注册账号吧。
tushare的网站如下:
注册之后,进入我的主页,找到借口TOKEN,如下图所示。
最右边复制这串***************************
三行代码注册一下啦。
import tushare as ts
token = '这里放刚才那串********************'
ts.set_token(token)
然后,终于,可以使用tushare了!
又到了上代码的环节。
import psycopg2
import pandas as pd
import tushare as ts
conn = psycopg2.connect(
database = 'test',
user = 'postgres',
password = '123456',
host = '127.0.0.1',
port = 5432
)
print(1)
curs = conn.cursor()
pro = ts.pro_api()
df = pro.namechange(ts_code = '600848.SH', fileds = 'ts_code, name, start_date, end_date, change_reason')
ts_code = df['ts_code'].tolist()
name = df['name'].tolist()
start_date = df['start_date'].tolist()
end_date = df['end_date'].tolist()
change_reason = df['change_reason'].tolist()
count = 0
for i in range(len(ts_code)):
curs.execute(
'''
insert into 股票曾用名2(
ts_code, name, start_date, end_date, change_reason
)
values(
%s, %s, %s, %s, %s
);
''',(
ts_code[i], name[i], start_date[i], end_date[i], change_reason[i]
)
)
conn.commit()
print("已插入{0}行,共有{1}行".format(count, len(ts_code)))
count += 1
a、为什么选择股票曾用名这种奇怪的数据,因为免费。
b、pro = ts.pro_api()
df = pro.namechange(ts_code = '600848.SH', fileds = 'ts_code, name, start_date, end_date, change_reason')
tushare股票曾用名的接口方式.
c、得到的返回数据类型为dataframe,那可就是pandas的天下了,当然这里并没有使用pandas。
来让我们在pgAdmin4看一下我们插入的数据吧!
好的,插入成功了。
5、数据的使用
这里将使用一个叫做sqlalchemy的python库,anaconda已经预装了,所以自己就不用安装啦。
SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
代码环节
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:123456@localhost:5432/test')
df_index = pd.read_sql(
"select ts_code, name, change_reason from 股票曾用名2;", con = engine
)
print(df_index.head())
df_index = pd.read_sql(
"select start_date, ts_code from 股票曾用名2 order by start_date;", con = engine
)
print(df_index.head())
create_engine提供了一个快速连接数据的方法。
这里解释一下括号中的字符串含义。
postgresql:// 说明使用的是postgresql数据库。
postgres:123456 说明postgresql的名称密码。
@localhost:5432 说明本地地址和端口号。
/test 说明使用的是test这个数据库。
接下来别忘了read_sql中的con参数就好啦。
输出结果
时间不早啦,今天就先到这里啦!