【2022国庆节我都经历(study)了个啥:PyCharm 部署 SSH SFTP MySQL】

我最初的困扰

我最初的困扰是我办公室的代码和家里的代码脱节了,我经常在两个地方新创或修改代码。这就导致一个问题,我有些时候写多了改多了,我是真的记不清都发生了什么。后来我就问自己,这种情况能否改善一下呢?其实答案很简单,就是要部署SSH,及其相关联的一些衍生产品。

准备工作

我们需要解决的问题即:同步家里和办公室的代码。That’s it!
我们需要什么呢?

  1. 一台带有外网的服务器
  2. 必须要用PyCharm Pro
  3. 部署SSH SFTP MySQL

为什么是这三项准备工作

  1. 一台带有外网的服务器的作用就是模拟一个网络环境,让你家的电脑和你办公室的电脑觉得它俩在一个网络环境下在运行。具体部署可以参考FRP项目,这里我不过多的赘述了,咱们今天讲得不需要FRP。外网服务器大家的选择基本上也就那几家左右吧?阿里的/腾讯的/华为的/等等。①看哪个服务器里你近,②然后费率比较美丽的,③最好还可以直接就可以布置宝塔镜像的,满足这三条是最好不过了。我最后选择了腾讯的3年440块带宝塔的云服务器,我目前只是希望续费的时候依然能像买的时候这么便宜XD。
  2. 我们必须要使用PyCharm Pro版,这个是没有办法绕过的坎儿,具体怎么实现我不想过多的阐述,办法总是有的,请自行去查。作为上班族我有能力支付年费,我差不多能支持正版我都会尽力去做,除了实在是太传统美德贵得离谱那种。
  3. 最后呢,就是挨个部署这几个服务了:SSH / SFTP / MySQL

开始我们今天的旅程!开始部署并实现这三个功能!!

SSH 的部署
  • 首先记得在服务器面板宝塔面板里把你的22号端口给放行了。宝塔面板
  • 然后我们在PyCharm的settings(ctrl + alt + s)里面去设置尝试连接服务器。PyCharm的Settings面板
  • 弄好了以后你也可以尝试部署SSH服务器解析器,不过多阐述,相关内容可以在CSDN上查看布置。我个人觉得没啥用,我就没搞。对于我来说无非就是多了个解析器。
SFTP 的部署

部署SSH的一个主要目的其实是为了使用SFTP功能,其实它就是个升级版的FTP功能,我们要实现的是办公室/家里的电脑文件和服务器云端进行同步,这样三个地点的文件就能够合一了,困扰我的问题也就解决了。

  • 我们部署好SSH后去菜单栏右数第四项的Tools >> Deployment >> Configuration…。Deployment设置connection
    Deployment设置mappings
    Deployment设置Exclusion
  • 成功设置后我们就可以右键点击想同步的文件夹进行Deployment同步啦,具体的操作可以自己体验,快感无限!
    Deployment成功设置后
  • Deployment设置好后还有一个好处就是你可以直接修改你服务器上的文件,在你的PyCharm右边栏有一个叫做Remote Host的标签,点开就能够实时观看或修改你布置的SFTP服务器上面的文件了,非常方便!
    Remote Host 在这里
MySQL 的部署

其实吧,我觉得MySQL对于我来说在Python量化这块没有什么太大的帮助,我在硬盘里放着CSV文件也一样可以使用的很好。我不是一个CS专业的人士(鄙人是金融+数学科班),但是秉着对新事物从不说不的出发点,我还是义无反顾的部署了这个功能,虽然我依然很菜。首先大家可以参考这个视频【【宝塔】安装云数据库MySQL教程】 我是跟着这个阿婆主进行设置的。

  1. 我们先在宝塔的面板上部署MySQL, 我用的是5.6版,镜像直接部署好的,挺方便的吧,所以才让大家找带有宝塔镜像的服务商。
  2. 部署完毕后我们先把MySQL的密码给修改一下,改为root和登录名一致,方便起见。在这里插入图片描述
  3. 然后我们要重复开端口这件事儿,服务器面板宝塔面板里 把MySQL的3306端口给放行。在这里插入图片描述
  4. 登录到服务器上,输入mysql -uroot -p 登录成功后会出现 MySQL > 命令行
  5. 注意!下面每行命令结尾都带有分号;一定不要忘记这个分号,要么命令会报错!
  6. 如果你的MySQL是5版的输入第一行命令 GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '替换成你的root密码' WITH GRANT OPTION;
  7. 如果你的MySQL是8版的输入第一行命令 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '替换成你的root密码';
  8. 后再输入第二行命令update user set host = '%' where user = 'root'; 允许远程登陆
  9. 最后输入第三行命令FLUSH PRIVILEGES; 更新权限,大功告成,离开服务器界面即可。
  10. 然后我们去PyCharm进行设置,如果你像阿婆主一样用NaviCat的话,设置也大同小异,看他的视频即可。在这里插入图片描述
    在这里插入图片描述
    设置的部分就基本上结束了,你觉得可以起飞了是不?咱们还没有设置Python呢老板!
Python 设置 MySQL
  1. 首先我们要安装两个库:
    pip install sqlalchemy
    pip install pymysql
    在这里插入图片描述
  2. 我们的导入库时一般这样操作
    在这里插入图片描述
  3. 强烈建议大家封装一个函数,这样可以避免反复操作,节省时间,原文的出处在这里,我稍微改动了一下。
def df_2_mysql(df, name, user='root用户名', psw='root密码', ip='服务器ip地址:3306', db='你的数据库名称'):
    """
    :param df: The data to pass
    :param name: The name of the table in db
    :param psw: Your password of your database
    :param ip: Your IP
    :param db: The name of your database
    :param user: root
    :return: None
    """

    con = create_engine('mysql+pymysql://{}:{}@{}/{}'.format(user, psw, ip, db))  # mysql+pymysql的意思为:指定引擎为pymysql
    df.to_sql(name, con, index=False, if_exists='replace', chunksize=None)
  1. 我上传一段我的代码,大家就明白我的意思了
def get_code_list():
    data = pro.daily_basic(trade_date=20221001)
    x1 = data.pb < 9  # 市净率小于9
    x2 = data.close < 120  # 收盘价小于120元
    x3 = data.circ_mv > 400000  # 流动市值大于40亿
    x41 = data.pe < 100  # 市盈率低于100
    x42 = data.pe_ttm > 0  # 滚动市盈率大于0
    x43 = data.ps_ttm > 0  # 滚动市销率大于0
    x5 = data.turnover_rate > 1  # 换手率大于1
    x6 = data.total_mv < 6000000  # 流动市值小于600亿
    x = x1 & x2 & x3 & x41 & x42 & x43 & x5 & x6
    stock_list_1 = data[x].ts_code.values.tolist()
    df_2_mysql(data[x], 'stock_daily_basic')    # 这样就上传成功了,是不是很方便?不用写那么长的代码,因为我们之前已经封装过了
  1. 这是我在PyCharm里调用查看数据库的截屏
    在这里插入图片描述
    PyCharm里调用数据库信息

结束语

啥都不是事儿,统统都能解决,现在差的就是真香代码了,囧

欢迎大家指点批评,共同进步!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mike_Leigh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值