未加星标

python peewee 乱码

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二04 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

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)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: 数据SQLMySQL删除
分页:12
转载请注明
本文标题:python peewee 乱码
本站链接:http://www.codesec.net/view/531314.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(130)