python使用peewee實現mysql資料操作

2021-07-05 04:58:44 字數 4015 閱讀 3762

peewee可用class來建立表,增刪改查,應該是相對餘單錶(本人幾乎沒用過,自以為如此)

想實現sql查詢,得到list,比如這樣的結果[,]

但是查詢結果是全是資料(元組),且找不到列名,後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,如[,]

'''傳入表名,要插入的資料[{}]

因為資料表使用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中peewee模組(二)

前言在前幾天的博文中介紹了peewee的基本操作,一些簡單的建立資料庫,建立表,表的查詢,插入等等。通過這些你並不能體會到peewee的強大之處.peewee深層應用之 bulk insert顧名思義就是實現塊插入或者是批量插入的功能,在處理大資料的時候簡直爽到爆!單個 多個 字典的整個插入 速度很...

Response AddHeader使用例項收集

response.addheader refresh 60 url newpath newpage.asp 這等同於客戶機端元素 頁面轉向 response.status 302 object moved response.addheader location newpath newpage.asp...

使用ServletFileUpload實現上傳

1.首先我們應該為上傳的檔案建乙個存放的位置,一般位置分為臨時和真是資料夾,那我們就需要獲取這倆個資料夾的絕對路徑,在servlet中我們可以這樣做 然後建立檔案工廠即倉庫乙個引數表示存放多大後flush,fileitemfactory factory new diskfileitemfactory...