python调用mysql数据进行计算_python使用peewee实现mysql数据操作
peewee可用class来创建表,增删改查,应该是相对余单表(本人几乎没用过,自以为如此)
想实现sql查询,得到list,比如这样的结果[{'user_name':'名字'},{'user_name':'名字'}]
但是查询结果是全是数据(元组),且找不到列名,后dir后逐个尝试发现列名可以使用result.description[j][0]获取
元组使用起来不方便,现实现将数据解析成想要的形式:[{}]
自己摸索的,比较粗糙,后续完善,再加入模糊查询
from peewee import *
import datetime
import time
import types
import pdb
import uuid
db = MySQLDatabase(host=host, user=user, passwd=passwd, database=database, charset=charset, port=port)
def select(table_name, columns='*', where='1=1', limit='0,10'):
'''
传入表名,要搜索的列(默认为*),查询条件,分页
返回一个list,其中元素为map,如[{'user_name':'名字'},{'user_name':'名字'}]
'''
sql = '''
select %s from %s where %s limit %s
''' % (columns, table_name, where, limit)
print sql
data_list = []
result = db.execute_sql(sql)
for array in result:
data_map = {}
j = 0
for value in array:
data_map[result.description[j][0]] = value
j += 1
data_list.append(data_map)
return data_list
def insert(table_name, values_list):
'''
传入表名,要插入的数据[{}]
因为数据表使用class创建,继承了基础表,在添加数据时加入基础表默认值
这里注意表中不能为空的列,否则可能报错
其中不同的数据类型使用不同的拼接方法,现只做了int,long,unicode,str
'''
columns = 'uuid,create_date,modify_date,status,'
keys = values_list[0].keys()
for key in keys:
columns = columns + key + ','
columns = '(' + columns[0:-1] + ')'
values = ''
for value_map in values_list:
data_uuid = uuid.uuid3(uuid.NAMESPACE_DNS, 'coonever')
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
value = "'" + str(data_uuid) + "','" + time_str + "','" + time_str + "',0"
for value_one in value_map.values():
if type(value_one) == long or type(value_one) == int:
value = value + ',' + repr(value_one)
elif type(value_one) == unicode:
value = value + ",'" + value_one.encode('utf-8') + "'"
elif type(value_one) == str:
value = value + ",'" + value_one + "'"
values = values + '(' + value + ')' + ','
values = values[0:-1]
sql = '''
insert into %s %s values %s ;
''' % (table_name, columns, values)
print sql
db.execute_sql(sql)
def insertOne(table_name, value_map):
'''
为实现只插入一条数据,然后返回某个值,后续实现返回指定项,现返回uuid
传入表名,要插入的数据{}
因为数据表使用class创建,继承了基础表,在添加数据时加入基础表默认值
这里注意表中不能为空的列,否则可能报错
其中不同的数据类型使用不同的拼接方法,现只做了int,long,unicode,str
''' columns = 'uuid,create_date,modify_date,status,'
keys = value_map.keys()
for key in keys:
columns = columns + key + ','
columns = '(' + columns[0:-1] + ')'
data_uuid = uuid.uuid3(uuid.NAMESPACE_DNS, 'coonever')
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
value = "'" + str(data_uuid) + "','" + time_str + "','" + time_str + "',0"
for value_one in value_map.values():
if type(value_one) == long or type(value_one) == int:
value = value + ',' + repr(value_one)
elif type(value_one) == unicode:
value = value + ",'" + value_one.encode('utf-8') + "'"
elif type(value_one) == str:
value = value + ",'" + value_one + "'"
value = '(' + value + ')'
sql = '''
insert into %s %s values %s ;
''' % (table_name, columns, value)
print sql
db.execute_sql(sql)
return str(data_uuid)
def update(table_name, value_map, where='1=1'):
'''
更新数据,value_map中存放将要更新的列及值
'''
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
set_value = "modify_date = '" + time_str + "',"
keys = value_map.keys()
values = value_map.values()
for key in keys:
if type(value_map[key]) == long or type(value_map[key]) == int:
set_value = set_value + key + "=" + repr(value_map[key]) + ","
elif type(value_map[key]) == unicode:
set_value = set_value + key + "='" + value_map[key].encode('utf-8') + "',"
elif type(value_map[key]) == str:
set_value = set_value + key + "='" + value_map[key] + "',"
set_value = set_value[:-1]
sql = '''
update %s set %s where %s ;
''' % (table_name, set_value, where)
print sql
db.execute_sql(sql)
def delete(table_name, where='1=1'):
'''
软删除,设置status=1
''' sql = ''' update %s set status = 1 where %s ; ''' % (table_name, where) print sql db.execute_sql(sql)
python调用mysql数据进行计算_python使用peewee实现mysql数据操作相关推荐
- Flink大数据实时计算系列-Flink窗口如何处理延时数据
Flink大数据实时计算系列-Flink窗口如何处理延时数据 目录 Flink窗口如何处理延时数据 allowedLateness延迟触发 sideOutputLateData 延时分流器 Flink ...
- python中plot实现即时数据动态显示方法_python中plot实现即时数据动态显示方法
在Matlab使用Plot函数实现数据动态显示方法总结中介绍了两种实现即时数据动态显示的方法.考虑到使用python的人群日益增多,再加上本人最近想使用python动态显示即时的数据,网上方法很少,固 ...
- python调用高德地图api 可视化_Python调用高德地图API实现经纬度换算、地图可视化...
前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密 ...
- python调用百度地图实现导航_python调用百度地图WEB服务API获取地点对应坐标值
本篇博客介绍如何使用Python调用百度地图WEB服务API获取地点对应坐标值,现有一系列结构化地址数据(如:北京市海淀区上地十街十号),目的是获取对应坐标值. 百度地图开发者平台路线规划使用说明网址 ...
- python调用c语言内核计算,在Linux上实现Python调用C语言函数
一般思路 Python中内置ctypes库,需调用c编译成的.so文件来实现函数调用. 假设我们所需调用的c文件名为test.c,文件里有我们需要的函数func(x,y). 将.c文件编译成 .so文 ...
- python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...
本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...
- python 通达信上传云端_Python读取通达信本地数据
一.介绍 python获取股票数据的方法很多,其中 Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通达信\vipdoc\sh\ ...
- python爬取微博恶评_Python爬取新浪微博评论数据,了解一下?
开发工具 **Python版本:**3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装 ...
- python中图例legend标签内容_Python学习第87课-数据可视化之图形标识title、label、legend...
[每天几分钟,从零入门python编程的世界!] 第86课我们学习了matplotlib,并且用它画了一个简单的图形,但是这个图形上面没有标题,没有标明x轴和y轴,而且用于画这个图形的数据都是我们手动 ...
最新文章
- pandas基于dataframe特定数据列的指定阈值将原dataframe分割成两个dataframe(split dataframe based on column value threshold
- serlvert jsp mysql_JAVA基础:Java多语言编码问题解析(2)
- ubuntu下如何切换输入法
- python sftp模块_python实现ssh及sftp功能(实例代码)
- Json格式的netconf转成NormalizedNode
- iis php mysql wiki_Windows下安装MediaWiki (iis+php+mysql+mediawiki)
- 背景图片自适应,不重复
- 550什么意思_布草知识 | 都是羽绒,为什么价格大不同?
- Java基础学习总结(97)——合格的Java的架构师需要具备的技术知识
- 两个有序链表序列的合并_leetcode链表之合并两个排序的链表
- 测试面试题集-网络基础
- IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
- Python实现样本类别的可视化(绘制饼图,展示各类别样本的比例)
- 解决easyui html的写法初始化会短暂出现dialoge
- 原生JS实现中文简繁切换
- 如何解决国产TongWeb中间件启动之后无法访问网站管理后台界面
- win10上VMware虚拟机设置固定IP地址
- JSP实用教程第二章-JSP语法
- ubuntu20.04安装搜狗sogou输入法
- 小黄车凉了?1分钟带你解锁共享经济的3种新玩法