python使用peewee实现mysql数据操作
来源:互联网 发布:抠图软件在线使用 编辑:程序博客网 时间:2024/06/05 09:59
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
'''
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使用peewee实现mysql数据操作
- peewee模块操作mysql数据库
- peewee连接mysql中文数据编码
- Python中的ORM使用之peewee
- Python的ORM框架Peewee使用入门(一)
- Python的ORM框架Peewee使用入门(二)
- Python的ORM框架Peewee使用入门(三)
- python ORM 模块peewee(二): 数据库使用的基本流程
- 使用peewee将数据库从mysql导入mongodb
- python轻量级ORM---peewee
- peewee快速使用
- 使用Python操作MySQL
- 使用python操作MySQL
- 使用python读取mysql数据库并进行数据的操作
- python<使用python操作Mysql>
- 使用python操作elasticsearch实现监控数据及kibana分析
- Hadoop之使用python实现数据集合间join操作
- Hadoop之使用python实现数据集合间join操作
- iGrimace IG 使用教程
- 域名解析
- hdu 5253 连接的管道
- LOJ1002可达路径中的最大中的最小边权
- 对数据库管理员和数据库用户的认识
- python使用peewee实现mysql数据操作
- SDWebImage学习
- 算法杂项:n进制转十进制
- Linux中vi编辑命令
- 2014 ACM/ICPC 西安赛区 F -- color
- GCC 编译linux运用程序开方错误的解决办法
- Qt 自定义事件
- 启动ie就出现“无法显示此页” 以及 360 浏览器 域名解析错误(错误代码:105) 解决办法
- IG&IC&Pra 安装教程 在线源方式安装 (无需要电脑联接手机)