python - sqlalchemy更新数据报错
伊谢尔伦
伊谢尔伦 2017-04-18 10:30:25
0
1
622

这是我的更新代码

def alter(self,id,key,value):
        session = Goods().getsession()
        session.query(Goods).filter(Goods.id==id).update({key:value})
        session.close()

但是会报错

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-1: ordinal not in range(256)

最新查错。
打印如下

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 -

初步发现问题所在 数据库为latin1编码

然后封装json的时候
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.id
        tmp['name'] = goods.name  //这里报错根源  带空格
        tmp['link'] = goods.link
        tmp['price'] = goods.price
        tmp['commit'] = goods.commit
        data.append(tmp)
    jsondata = json.dumps(data)   //这里报错
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(1)
PHPzhong

Saya tidak banyak menulis tentangnya, tetapi saya rasa

1 Sahkan bahawa kunci mahupun nilai anda bukan Tiada
2

    Jelas sekali terdapat masalah dengan tetapan set aksara pangkalan data Sila tetapkan set aksara pangkalan data kepada UTF-8
  1. Jika anda tidak mahu menyediakan pangkalan data, nyahkod data yang hendak dimasukkan info_str.encode('format anda') dan kemudian masukkannya
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!