python - sqlalchemy更新數(shù)據(jù)報(bào)錯(cuò)
問題描述
這是我的更新代碼
def alter(self,id,key,value):session = Goods().getsession()session.query(Goods).filter(Goods.id==id).update({key:value})session.close()
但是會報(bào)錯(cuò)
UnicodeEncodeError: ’latin-1’ codec can’t encode characters in position 0-1: ordinal not in range(256)
最新查錯(cuò)。打印如下
print type(id),type(key),type(value)
<type ’unicode’> <type ’unicode’> <type ’unicode’>127.0.0.1 - - [31/Mar/2017 06:32:05] 'GET /alter?id=1497&key=name&value=%E8%8D%A3%E8%80%80V9+%E6%89%8B%E6%9C%BA+%E9%93%82%E5%85%89%E9%87%91+%E5%85%A8%E7%BD%91%E9%80%9A4G(4G+RAM%2B64G+ROM)%E6%A0%87%E9%85%8D HTTP/1.1' 200 -
初步發(fā)現(xiàn)問題所在 數(shù)據(jù)庫為latin1編碼
然后封裝json的時(shí)候UnicodeDecodeError: ’utf8’ codec can’t decode bytes in position 90-91: unexpected end of data
代碼
def get(self):
session = Goods().getsession() goodslist = session.query(Goods) session.close() data = [] for goods in goodslist:tmp = {}tmp[’id’] = goods.idtmp[’name’] = goods.name //這里報(bào)錯(cuò)根源 帶空格tmp[’link’] = goods.linktmp[’price’] = goods.pricetmp[’commit’] = goods.commitdata.append(tmp) jsondata = json.dumps(data) //這里報(bào)錯(cuò)
問題解答
回答1:沒怎么寫過,但是猜測一下
1. 確認(rèn)你的key和value都不為None2. 更新不用commit么
明顯是數(shù)據(jù)庫字符集設(shè)置有問題,請?jiān)O(shè)置數(shù)據(jù)庫字符集為UTF-8
如果不想設(shè)置數(shù)據(jù)庫,就解碼待插入的數(shù)據(jù) info_str.encode(’你的格式’)再插入
相關(guān)文章:
1. javascript - 下面的這段算法代碼求解釋2. javascript - 在top.jsp點(diǎn)擊退出按鈕后,right.jsp進(jìn)行頁面跳轉(zhuǎn),跳轉(zhuǎn)到login.jsp3. javascript - js 有什么優(yōu)雅的辦法實(shí)現(xiàn)在同時(shí)打開的兩個(gè)標(biāo)簽頁間相互通信?4. android - 哪位大神知道java后臺的api接口的對象傳到前端后輸入日期報(bào)錯(cuò),是什么情況?求大神指點(diǎn)5. css3 - 在sublime text里, 如何讓emmet生成的帶前綴css屬性垂直對齊?6. mac連接阿里云docker集群,已經(jīng)卡了2天了,求問?7. javascript - 回調(diào)函數(shù)和閉包的關(guān)系8. java - spring-data Jpa 不需要執(zhí)行save 語句,Set字段就可以自動(dòng)執(zhí)行保存的方法?求解9. [前端求職必看]前端開發(fā)面試題與答案精選_擴(kuò)展問題10. 想找個(gè)php大神仿個(gè)網(wǎng)站。
