暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

flask+echarts+openGauss和mysql的区别

原创 吴毅 2021-11-22
1629

上一篇已经成功把mysql的基础数据表shares_basic迁移到openGauss上,现在修改python程序,使得openGauss替换mysql能搭配flask+echarts做数据大屏可视化。
1. 安装psycopg2和SQLAlchemy

pip install psycopg2-binary pip install SQLAlchemy==1.4.26

修改采集股票数据到openGauss的脚本test.py。

import pandas as pd from sqlalchemy import create_engine engine = create_engine('postgresql://wuyi:xxxxx@kafka1.wuyi.com:26000/share2', charset='utf8') sql1 = "select * from test1.shares_basic" da0 = pd.read_sql(sql1 , engine) print(da0)

运行后报错,如下图所示:
image.png
原因是mysql支持charset,而openGauss不支持,只支持client_encoding,把charset修改为client_encoding即可。
image.png
2. 当把处理好的数据写入到shares_wide表时,运行报错如图所示:
image.png
提示wuyi这个用户没有schema public的权限,原本想是指定test1的schema来操作,找了很多资料测试都无法解决这个问题。在https://www.modb.pro/db/28397?from=singlemessage有讲述到openGauss默认对普通用户不开放public模式的权限。这样就可以通过给用户wuyi授予schema public的权限来解决这个问题。

\c share2 omm grant all on schema public to wuyi; \c share2 wuyi /

在执行test.py脚本,成功把数据写入到public.shares_wide表中。如图所示:
image.png
因为public.shares_wide是宽表,而使用的云服务器的容量有限(只有40G),所以只是作为测试,后续的开发不会使用这张表。
3. 对比pymysql连接mysql和psycopg2连接openGauss的区别。

def get_conn(): # conn = pymysql.connect( 使用pymysql连接mysql conn = psycopg2.connect( #使用psycopg2连接openGauss host="kafka1.wuyi.com", user="wuyi", password="xxxxx", # db="share2", mysql database="share2", # openGauss和mysql # charset="utf8", mysql client_encoding='utf8', # openGauss port=26000 ) # 创建游标: cursor = conn.cursor() return conn, cursor

特别注意一点:openGauss不能像mysql那样使用db=”share2”表示数据库名,否则会报错。应该改为database=“share2”。如图所示:
image.png
image.png

4. 定时任务
因云服务器配置低原因,测试过3秒间程序可以走完整个流程.低于3秒数据展示变动的效果跟3秒一样。之前想使用while永久循环,每隔3秒检测任务进程是否在运行,但是发现使用循环太慢,达不到效果。还是crontab定时任务:
指定时间每3秒更新一次数据

* 10,13,14 * * 1-5 /home/wuyi/miniconda2/envs/wuyi/bin/python3 /opt/script/ sharegauss.py * 10,13,14 * * 1-5 sleep 3; /home/wuyi/miniconda2/envs/wuyi/bin/python3 /opt/script/sharegauss.py * 10,13,14 * * 1-5 sleep 6; /home/wuyi/miniconda2/envs/wuyi/bin/python3 /opt/script/sharegauss.py

第1个表示分钟,10,13,14是第2个表示小时,第3个表示天数,第4个表示月份,1-5是第5个*表示星期,sleep 3表示每隔3秒唤醒一次(即执行一次)。现在执行一次脚本/home/wuyi/miniconda2/envs/wuyi/bin/python3 /opt/script/sharegauss.py 执行过程没提示,即为执行成功,如图所示:
image.png
5. 之前还出现过一个问题,就是密码使用错误,导致采集数据时,出现频繁连接openGauss,导致账户被锁。如图所示:
image.png
解决的办法:使用omm登录数据库,并使用命令修改为其解锁。命令如下:

gsql -d postgres -p 26000 -r
alter user wuyi account unlock;

image.png
通过这次对数据库的变更和使用python连接mysql和openGauss的对比,从而对openGauss有了进一步的了解。同时在采集和处理数据后使用sqlalchemy写入openGauss里面,而后台使用psycopg2来获取openGauss的数据。感兴趣的可以打开http://www.wuyicom.top:5000/查看股票实时数据大屏展示效果。数据的变化时根据股票的交易时间来获取,时间段为星期一到星期五的9点30—11点30分和13点—15点。

最后修改时间:2021-11-25 12:25:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论