新能源汽车可视化大屏数据展示系列之六数据存储到RDS
任务目标:
将temp.csv文件的数据,导入到RDS数据库中
操作步骤:
1.过滤无效数据
2.测试
3.导入数据到RDS
实践步骤:
1.在spider.py文件上添加3行指令
#要存储文件,需要引入配置文件
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "carShow.settings")
django.setup()
from myApp.models import CarInfo
2.创建数据清理的函数
#dropna 删除包含缺失值(NaN)的行;drop_duplicates 删除重复的行
def clear_csv(self):
df=pd.read_csv('./temp.csv')
df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
# print('总数据量为%d'%df.shape[0])
return df.values
3.调用测试之
#主程序的调用;spiderObj就是spider类的对象/变量
if __name__ == '__main__':
spiderObj=spider()
#调用一下init(),用来生成temp.csv文件
# spiderObj.init()
#调用main()函数;
# spiderObj.main()
#测试一个总条数的函数
# spiderObj.clear_csv()
测试结果如下:
D:\pythondemo\carProject2\.venv\Scripts\python.exe D:\pythondemo\carProject2\spiderMain\spider.py
总数据量为236
4.增加保存到RDS的函数
#定义一个函数,保存数据到mysql
def save_to_sql(self):
data=self.clear_csv()
for car in data:
CarInfo.objects.create(
brand=car[0],
carName=car[1],
carImg=car[2],
saleVolume=car[3],
price=car[4],
manufacturer=car[5],
rank=car[6],
carModel=car[7],
energyType=car[8],
marketTime=car[9],
insure=car[10]
)
5.测试执行,在调用处增加函数调用
#调用一下执行函数
spiderObj.save_to_sql()
效果如下图所示
6..多学一招【os.envin】
environ是一个字符串所对应环境的映像对象,也就是我们常说的系统环境变量
在看下os.environ提供的是什么东西。
import os
for i, v in enumerate(os.environ.items(), 1):
print(i, v)
('PATH', '/Users/zhangjin/2018/Django_2018/venv/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin')
('PYTHONPATH', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend:/Users/zhangjin/2018/Django_2018')
('SHELL', '/bin/bash')
('PYTHONIOENCODING', 'UTF-8')
('VERSIONER_PYTHON_PREFER_32_BIT', 'no')
('USER', 'zhangjin')
('TMPDIR', '/var/folders/nr/0d3xpgl16cb036rk2_gh1jr00000gn/T/')
('PS1', '(venv) ')
('SSH_AUTH_SOCK', '/private/tmp/com.apple.launchd.OKzHAUzpN0/Listeners')
('VIRTUAL_ENV', '/Users/zhangjin/2018/Django_2018/venv')
('XPC_FLAGS', '0x0')
('PYTHONUNBUFFERED', '1')
('VERSIONER_PYTHON_VERSION', '2.7')
('__CF_USER_TEXT_ENCODING', '0x1F5:0x19:0x34')
('Apple_PubSub_Socket_Render', '/private/tmp/com.apple.launchd.JFjmO3gaCM/Render')
('LOGNAME', 'zhangjin')
('LC_CTYPE', 'zh_CN.UTF-8')
('XPC_SERVICE_NAME', 'com.jetbrains.pycharm.19716')
('PWD', '/Users/zhangjin/2018/Django_2018/login')
('PYCHARM_HOSTED', '1')
('HOME', '/Users/zhangjin')
('PYCHARM_MATPLOTLIB_PORT', '49205')
('__PYVENV_LAUNCHER__', '/Users/zhangjin/2018/Django_2018/venv/bin/python')
对比一下,是不是发现系统环境变量都在这里面了,这就对了,python提供的os.environ是一个类字典的数据类型对象,存放着所有系统相关的环境变量,所以如果要在你的python程序中操作环境变量时就需要对这个对象进行操作了。
在学习Django的setting文件时,有这么一段话:
指定配置文件
使用Django时要通知Django当前使用的是哪个配置文件。可以改变环境变量 DJANGO_SETTINGS_MODULE
实现这一点。
当我们使用manage.py运行起本地的web服务器时,为了让Django知道使用哪个配置文件,就指定了DJANGO_SETTINGS_MODULE的环境变量的路径,我们看下manage.py
指定配置文件
DJANGO_SETTINGS_MODULE
使用Django时要通知Django当前使用的是哪个配置文件。可以改变环境变量 DJANGO_SETTINGS_MODULE 实现这一点。
当我们使用manage.py运行起本地的web服务器时,为了让Django知道使用哪个配置文件,就指定了DJANGO_SETTINGS_MODULE的环境变量的路径,我们看下manage.py
由于不同的系统环境变量命名是有所不同的,比如在类Unix系统家目录的环境变量是的os.environ['HOME'] 而在windows中就是'HOMEPATH'了,
又比如linux下的USER在windows下面对应的就是USERNAME.
总结这些差异来说,他们都是各自系统的本身特性造成的,比如你用的是gnome版的ubuntu,那么key里面就会多出一条['GNOME_DESKTOP_SESSION_ID'].
key字段详解
windows:
os.environ['HOMEPATH']:当前用户主目录。
os.environ['TEMP']:临时目录路径。
os.environ[PATHEXT']:可执行文件。
os.environ['SYSTEMROOT']:系统主目录。
os.environ['LOGONSERVER']:机器名。
os.environ['PROMPT']:设置提示符。
django 解决: You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.c
在文件开始加上
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djblog.settings")
注意一定要加在load model.xxx之前
目的是为了任何一个django project中的*.py文件都能够正常的使用项目中的数据模型操作。
- 点赞
- 收藏
- 关注作者
评论(0)