【需求】1. 在数据库中创建表,且能按时间自动创建新表 2. 数据写入数据库 3. 从数据库读取数据

1. 创建表,并自动更新

 def Creat_Table(InitMySQL,tabel_name):
# 创建游标
cursor = InitMySQL.cursor()
sql = "create table if not exists " + tabel_name + "(dTime datetime not null comment '时间'," \
"dElectric_uA int not null comment '电流'," \
"dDistance int not null comment '距离'," \
"dWarning int not null comment '报警')"
# 打印sql
print(sql)
cursor.execute(sql)
# 关闭游标
cursor.close()

需要输入数据库的连接对象和表名称,sql根据表名称判断数据库中是否存在该表,如果存在则不会创建,不存在则创建新表

tabel_name 可以根据时间创建

2. 向数据库中写入数据

根据创建的数据库中表的类型进行数据填充

 def Write_to_MySQL(InitMySQL,tabel_name, CurrentTime, Electric_uA, Distance, WaringStatus):
# 创建游标
cursor = InitMySQL.cursor()
# #创建sql
# w_table_name = 'warning' + day_time
sql = 'insert into '+ tabel_name+ ' values (%s, %s, %s, %s)'
print(sql)
result = cursor.execute(sql,(CurrentTime, Electric_uA, Distance, WaringStatus))
if result == 1:
pass
# print('添加成功!')
else:
print('添加数据失败!')
# 4. 操作成功提交事务
InitMySQL.commit()
# 关闭游标
cursor.close()

整体表的创建与数据输入

 import time
import datetime
import json
import pymysql # JSON 文件初始化
def InitJSON():
global filejson
try:
with open('TIE_LDY_20190923_1502.json', 'r') as f:
filejson = json.load(f)
except FileNotFoundError:
print('无法打开指定的文件!')
except LookupError:
print('指定了未知的编码!')
except UnicodeDecodeError:
print('读取文件时解码错误!') # 数据库参数初始化
def MysqlInit():
# global LiuCaoSQL
# 1. 创建数据库连接对象
InitMySQL = pymysql.connect(host=filejson['MysqlInit']['host'], port=filejson['MysqlInit']['port'],
database=filejson['MysqlInit']['database'], charset=filejson['MysqlInit']['charset'],
user=filejson['MysqlInit']['user'], password=filejson['MysqlInit']['password'])
return InitMySQL def Creat_Table(InitMySQL,tabel_name):
# 创建游标
cursor = InitMySQL.cursor()
# # 获取当前时间 年-月-日
# day_time = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M")
# # 拼接table名称
# tabel_name = 'warning' + day_time
# 创建sql语句 创建列表的表头 注意表的类型create table if not exists tablename
sql = "create table if not exists " + tabel_name + "(dTime datetime not null comment '时间'," \
"dElectric_uA int not null comment '电流'," \
"dDistance int not null comment '距离'," \
"dWarning int not null comment '报警')"
# 打印sql
print(sql)
cursor.execute(sql)
# 关闭游标
cursor.close() # 向数据库写入内容
def Write_to_MySQL(InitMySQL,tabel_name, CurrentTime, Electric_uA, Distance, WaringStatus):
# 创建游标
cursor = InitMySQL.cursor()
# 获取当前时间 年-月-日
# day_time = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M")
# #创建sql
# w_table_name = 'warning' + day_time
sql = 'insert into '+ tabel_name+ ' values (%s, %s, %s, %s)'
print(sql)
result = cursor.execute(sql,(CurrentTime, Electric_uA, Distance, WaringStatus))
if result == 1:
pass
# print('添加成功!')
else:
print('添加数据失败!')
# 4. 操作成功提交事务
InitMySQL.commit()
# 关闭游标
cursor.close()
def main():
# 初始化JSON 和数据库
InitJSON()
InitMySQL = MysqlInit()
# 测试数据库创建 表
# Creat_Table(InitMySQL)
# 测试写入数据
Electric_uA = 1000
Distance = 1000
WaringStatus = 0
i= 0
while(i < 10000):
# 获取当前时间 年-月-日
day_time = datetime.datetime.now().strftime("%Y_%m_%d_%H_%M")
# 拼接table名称
tabel_name = 'warning' + day_time
# 测试数据库创建 表
Creat_Table(InitMySQL,tabel_name)
i += 1
CurrentTime = datetime.datetime.now().strftime("%Y_%m_%d %H:%M:%S")
Electric_uA -= 1
Distance += 1
Write_to_MySQL(InitMySQL, tabel_name, CurrentTime, Electric_uA, Distance, WaringStatus)
time.sleep(0.01)

测试的数据库结果:

3. 从数据库读取数据

 """
【函数功能】 读取数据库中最新的几分钟数据
【输入】 需要查询的table名称(也可以从JSON中读取)
【输出】 查找的数据列表
"""
def Read_from_Mysql(InitMySQL, sql_tabel_name):
# 从JSON中读取sql需要的参数
set_time = filejson['MysqlInit']['set_delaytime_min']
now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
last_time = (datetime.datetime.now() - datetime.timedelta(minutes = set_time)).strftime("%Y-%m-%d %H:%M:%S")
# sql_tabel_name = filejson['MysqlInit']['sql_tabel_name']
sql_distance_header = filejson['MysqlInit']['distance_header']
sql_time_header = filejson['MysqlInit']['time_header']
# 创建游标
cursor = InitMySQL.cursor()
sql = "SELECT " + sql_distance_header + " FROM " + sql_tabel_name + " WHERE " + sql_time_header \
+ "<'" + now_time + "'" + " and " + sql_time_header + ">'" +last_time + "'"
# print(sql)
cursor.execute(sql)
# 获取该字段下的数据
result = cursor.fetchall()
# 关闭游标
cursor.close()
# 将数据转换成列表
new_distance= []
for dis in result:
new_distance.append(dis[0])
return new_distance

【重点】sql的字符串拼接中可以加入变量 时间需要用单引号引起来

园中有博主写的关于数据库,非常详细 可以参考 https://www.cnblogs.com/hackerer/p/11588717.html

Python_MySQL数据库的写入与读取的更多相关文章

  1. 我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。

    我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据.因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好. 组件 描述 写入( ...

  2. php 如何写入、读取word,excel文档

    如何在php写入.读取word文档 <? //如何在php写入.读取word文档 // 建立一个指向新COM组件的索引 $word = new COM("word.applicatio ...

  3. mysql千万级数据库插入速度和读取速度的调整记录

    一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧. 1)提高数据库插入性能中心思想:尽量将数据一 ...

  4. 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取

    装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...

  5. 从HDFS的写入和读取中,我发现了点东西

    摘要:从HDFS的写入和读取中,我们能学习到什么? 本文分享自华为云社区<从HDFS的写入和读取中,我们能学习到什么>,作者: breakDawn . 最近开发过程涉及了一些和文件读取有关 ...

  6. PHP往mysql数据库中写入中文失败

    该类问题解决办法就是 在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect("localhost","root&q ...

  7. java一行一行写入或读取数据

    原文:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html 假如E:/phsftp/evdokey目录下有个evdokey_2 ...

  8. iOS中plist的创建,数据写入与读取

    iOS中plist的创建,数据写入与读取 Documents:应用将数据存储在Documents中,但基于NSuserDefaults的首选项设置除外Library:基于NSUserDefaults的 ...

  9. 将raw里面的数据库文件写入到data中

    package com.city.list.db; import java.io.File; import java.io.FileNotFoundException; import java.io. ...

随机推荐

  1. Spring系列__04AOP

    AOP简介 今天来介绍一下AOP.AOP,中文常被翻译为"面向切面编程",其作为OOP的扩展,其思想除了在Spring中得到了应用,也是不错的设计方法.通常情况下,一个软件系统,除 ...

  2. Nginx安装及详解

    Nginx简介: Nginx(发音engine x)专为性能优化而开发的开源软件,是HTTP.反向代理.邮件代理.TCP/UDP协议代理软件,由俄罗斯的作者Igor Sysoev开发,其最知名的优点是 ...

  3. SqlServer2014怎样还原数据库

    场景 在SqlServer2014企业版上怎样进行数据库的还原,首先你得有一个其他数据 的备份文件. 实现 打开cmd,输入sql,打开SqlServer 2014 Management Studio ...

  4. 松软科技课堂:Winform之TextBox

    松软科技文(www.sysoft.net.cn): 文本框的几种模式:Multiline(多行).PasswordChar(密码)将文本框的PasswordChar设为*就是密码框效果,将MultiL ...

  5. 记一个复杂组件(Filter)的从设计到开发

    此文前端框架使用 rax,全篇代码暂未开源(待开源) 原文链接地址:Nealyang/PersonalBlog 前言 貌似在面试中,你如果设计一个 react/vue 组件,貌似已经是司空见惯的问题了 ...

  6. vmware配置静态ip

    wmware安装后,默认是动态ip地址. 在测试环境搭建虚拟机后,都需要使用静态ip地址.但是配置固定静态ip地址后,虚拟机总是不能上网和访问网站域名. 原来问题出在配置固定ip后配置的的网关和域名解 ...

  7. 环境搭建-Hadoop集群搭建

    环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...

  8. selenium基于java 一 软件安装

    学习网站 http://www.testclass.net/selenium_java/ 一·安装java环境及eclipse,网上教程较多不讲 二·下载火狐浏览器(旧版) 下载地址:链接: http ...

  9. 2019-2020-1 20199303 《Linux内核原理分析》 第一周作业

    2019-2020-1 20199303 <Linux内核原理分析> 第一周作业 1. 环境准备 在众多的Linux发行版中,Ubuntu,小红帽还有类Unix系统的BSD系统,我选择了目 ...

  10. 基于RHEL8/CentOS8的网络基础配置

    在rhel7上,同时支持network.service和NetworkManager.service(简称NM).默认情况下,这2个服务都有开启,但许多人都会将NM禁用掉.而在rhel8上,已废弃ne ...