python定时取数据库数据_Python定时从Mysql提取数据存入Redis的实现

设计思路:

1.程序一旦run起来,python会把mysql中最近一段时间的数据全部提取出来

2.然后实例化redis类,将数据简单解析后逐条传入redis队列

3.定时器设计每天凌晨12点开始跑

ps:redis是个内存数据库,做后台消息队列的缓存时有很大的用处,有兴趣的小伙伴可以去查看相关的文档。

# -*- coding:utf-8 -*-

import MySQLdb

import schedule

import time

import datetime

import random

import string

import redis

# get the data from mysql

class FromSql(object):

def __init__(self, conn):

self.conn = conn

def acquire(self):

cursor = self.conn.cursor()

try:

sql = "SELECT * FROM test WHERE TO_DAYS(NOW()) - TO_DAYS(t) <= 1"

cursor.execute(sql)

rs = cursor.fetchall()

#print (rs)

for eve in rs:

print('%s, %s, %s, %s' % eve)

copy_rs = rs

cursor.close()

return copy_rs

except Exception as e:

print("The error: %s" % e)

class RedisQueue(object):

def __init__(self, name, namespace='queue', **redis_kwargs):

"""The default connection parameters are: host='localhost', port=6379, db=0"""

self.__db= redis.Redis(**redis_kwargs)

self.key = '%s:%s' %(namespace, name)

def qsize(self):

return self.__db.llen(self.key)

def put(self, item):

self.__db.rpush(self.key, item)

def get(self, block=True, timeout=None):

if block:

item = self.__db.blpop(self.key, timeout=timeout)

else:

item = self.__db.lpop(self.key)

if item:

item = item[1]

return item

def get_nowait(self):

return self.get(False)

if __name__ == "__main__":

# connect mysqldb

conn_sql = MySQLdb.connect(

host = '127.0.0.1',

port = 3306,

user = 'root',

passwd = '',

db = 'test',

charset = 'utf8'

)

def job_for_redis():

get_data = FromSql(conn_sql)

data = get_data.acquire()

q = RedisQueue('test',host='localhost', port=6379, db=0)

for single_data in data:

for meta_data in single_data:

q.put(meta_data)

print(meta_data)

print("All data had been inserted.")

"""

try:

schedule.every().day.at("00:00").do(job_for_redis)

except Exception as e:

print('Error: %s'% e)

# finally:

# conn.close()

while True:

schedule.run_pending()

time.sleep(1)

"""

补充知识:python定时获取汇率存入数据库

python定时任务:

我们可以使用 轻量级的第三方模块schedule。首先先安装:pip install schedule

定时任务的的小测试:

import schedule

import time

def job():

print("I'm working...")

schedule.every(10).minutes.do(job) # 每隔10分钟执行一次任务

schedule.every().hour.do(job) # 每隔一小时执行一次任务

schedule.every().day.at("10:30").do(job) # 每天10:30执行一次任务

schedule.every(5).to(10).days.do(job) # 每5-10天执行一次任务

schedule.every().monday.do(job) # 每周一的这个时候执行一次任务

schedule.every().wednesday.at("13:15").do(job) # 每周三13:15执行一次任务

while True:

schedule.run_pending()

获取数据存入数据库:(格式可能不太对,还有一些符号。自己修改一下即可)

import pymysql

import schedule

import time

import requests

import pandas

from sqlalchemy import create_engine

#获取美元的所有外汇

def job():

content = '美元'

url = 'http://www.boc.cn/sourcedb/whpj/index.html' #外汇数据地址

html = requests.get(url).content.decode('utf-8')

index = html.index('

' + content + '')

str = html[index:index+300]

result = re.findall('

(.*?)',str)

print("币种:" + result[0])

print("现汇买入价:" + result[1])

print("现钞买入价:" + result[2])

print("现汇卖出价:" + result[3])

print("现钞卖出价:" + result[4])

print("中行结算价:" + result[5])

print("发布时间:" + result[6] + ' ' + result[7])

#本地地址 数据库账号 密码 数据库名

db = pymysql.connect('localhost','root','root','pinyougoudb')

cursor = db.cursor()

#sql语句

sql = "update tb_money set huiBuy = %s,chaoBuy = %s,huiSale = %s,chaoSale = %s,centerResult= %s,publishTime = '%s' where typeId = '%s'" % (result[1], result[2], result[3], result[4], result[5], result[6] + ' ' + result[7], result[0])

cursor.execute(sql)

db.commit()

print('success')

# 查询语句,将存入的数据查出来

# sqlalchemy 进行数据库初始化

engine = create_engine('mysql+pymysql://root:root@localhost:3306/pinyougoudb')

sql = '''select * from tb_money'''

# pandas 进行数据库读写

df = pandas.read_sql_query(sql,engine)

print(df)

db.commit()

# 每隔几分中刷新一次

#schedule.every(0.1).minutes.do(job)

#每天什么时候刷新

schedule.every().day.at("09:29").do(job)

schedule.every().day.at("09:30").do(job)

#一直循环 知道满足条件执行

while True:

schedule.run_pending()

以上这篇Python定时从Mysql提取数据存入Redis的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonMySQL结合可以实现以下常见功能: 1. 连接与操作数据库: - 使用PythonMySQL连接器(如mysql-connector-python、PyMySQL等)连接到MySQL数据库。 - 执行SQL查询语句,插入、更新或删除数据,创建或修改表结构等。 2. 数据导入与导出: - 从外部数据源(如CSV文件、Excel文件)中读数据,然后使用Python数据导入MySQL数据库。 - 将MySQL数据库中的数据导出到其他格式(如CSV、Excel等)进行备份或进一步处理。 3. 数据处理与分析: - 使用Python数据处理库(如Pandas、NumPy等)读MySQL中的数据,并进行数据清洗、转换、计算等操作。 - 进行统计分析、数据挖掘、机器学习等任务,如聚类、分类、回归等。 4. 数据可视化: - 使用Python的可视化库(如Matplotlib、Seaborn、Plotly等)从MySQL提取数据,并创建各种图表和图形展示。 - 生成可交互的图表和仪表板,以更好地展示和分享分析结果。 5. 自动化任务与调度: - 使用Python编写脚本来执行定期的数据库维护任务,如备份、优化查询、清理数据等。 - 结合Python的调度库(如APScheduler)实现定时任务,自动化执行重复性的数据库操作。 6. Web应用程序开发: - 使用Python的Web框架(如Django、Flask等)结合MySQL数据库构建动态的Web应用程序。 - 创建用户管理系统、数据展示页面、表单提交和数据处理等功能。 这些是PythonMySQL结合常见的功能,通过使用Python的强大生态系统和MySQL数据库的灵活性,可以实现更加丰富和高效的数据处理、分析和应用开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值