码农公社 210.net.cn 210= 1024 10月24日一个重要的节日--码农(程序员)节
-------------------------------
要达到的目的:
1、在数据库中建表,且可按时间自动建新表
2、数据写入数据库表
3、从数据库表读取数据
--------------------------------创建表,并自动更新
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()
测试的数据库结果:
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/wangxiaobei2019/p/11576898.html,略作完善。