Kafka与MySQL的组合使用

  1. 根据上面给出的student表,编写Python程序完成如下操作:

(1)读取student表的数据内容,将其转为JSON格式,发送给Kafka;

创建Student表的SQL语句如下:

python 复制代码
create table student(
sno char(5),
sname char(10),
ssex char(2),
sage int
);

向student表中插入两条记录的SQL语句如下:

python 复制代码
insert into student values('95001','John','M',23);
insert into student values('95002','Tom','M',23);

启动zookeeper和kafka的服务

编写一个生产者程序mysql_producer.py:

python 复制代码
from kafka import KafkaProducer
import json
import pymysql.cursors

producer = KafkaProducer(bootstrap_servers='localhost:9092',value_serializer=lambda v:json.dumps(v).encode('utf-8'))

connect=pymysql.Connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='123456',
    db='zhangna',
    charset='utf8'
)
cursor=connect.cursor()
sql="select sno,sname,ssex,sage from student;"
cursor.execute(sql)
data=cursor.fetchall()
connect.commit()

for message in data:
    zn={}
    zn['sno']=message[0]
    zn['sname']=message[1]
    zn['sex']=message[2]
    zn['age']=message[3]
    producer.send('mysql_topic',zn)

connect.close()
producer.close()

(2)再从Kafka中获取到JSON格式数据,打印出来;

编写一个消费者程序mysql_consumer.py:

python 复制代码
from kafka import KafkaConsumer
import json
import pymysql.cursors

consumer = KafkaConsumer('mysql_topic',bootstrap_servers=['localhost:9092'],group_id=None,auto_offset_reset='earliest')
for msg in consumer:
	msg1=str(msg.value,encoding="utf-8")
	data=json.loads(msg1)
	print(data)

终于出来了,出错的原因是encoding,我写成了encodings的缘故

为什么我会出现两条重复记录,原因是我生产者程序运行了多次,生产者多运行一次,消费者程序就会多一次查询

相关推荐
乐hh2 分钟前
清理MySQL数据
数据库·mysql
EasyCVR5 分钟前
国标GB28181/RTSP/ONVIF/RTMP视频监控平台EasyCVR视频质量诊断花屏/蓝屏/画面模糊/冻结检测
网络·数据库·音视频
C^h8 分钟前
RTthread中的内存池理解
linux·数据库·c++·算法·嵌入式
fobwebs10 分钟前
wordpress 网站安装了Yoast SEO,并且做了内容的优化后,如果想重置Yoast SEO,并且删除所有的优化内容,应该如何操作?
数据库·yoast seo·重置yoast seo·清空yoast seo内容
路由侠内网穿透27 分钟前
本地部署开源 LLM 应用观测与调试平台 Langfuse 并实现外部访问
运维·服务器·数据库·物联网·开源
SPC的存折27 分钟前
1、Ansible之Ansible安装与入门
linux·数据库·ansible
qiumingxun32 分钟前
mysql的分区表
数据库·mysql
李昊哲小课32 分钟前
aiomysql 完整实战教程
python·mysql·pymysql·aiomysql
sxhcwgcy33 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
康康的AI博客34 分钟前
向量数据库选型指南:AI 数据底座怎么选不踩坑
数据库·人工智能