海上月明

          editer by sun
          posts - 162, comments - 51, trackbacks - 0, articles - 8
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          python操作sqlite3 碰到中文問題

          Posted on 2013-06-07 19:01 pts 閱讀(5844) 評論(0)  編輯  收藏 所屬分類: Python

          錯問癥狀:

          OperationalError: Could not decode to UTF-8 column 'shouji_lanshouyuan' with text '國際2部 鄔長春'

          解決方案:

          conn = sqlite3.connection(" ... ")
          conn.text_factory = str

          解決問題方案來源:http://bbs.csdn.net/topics/250055755

          設置python使用什么類型來處理sqlite3的text類型,默認是unicode,所以才會產生
          OperationalError: Could not decode to UTF-8 column 'name' with text '國內其他' 
          這個錯誤

          因為從數據庫中取出數據時,是gbk編碼(因為你上次存進去的是gbk)
          conn.text_factory的默認值是unicode,python會嘗試將text類型的字段轉換成unicode,就產生了錯誤

           

          附:sqlite3的row操作:

          Row對象的詳細介紹

          class sqlite3.Row

          Row instance serves as a highly optimized row_factory for Connection objects. It tries to mimic a tuple in most of its features.

          It supports mapping access by column name and index, iteration, representation, equality testing and len().

          If two Row objects have exactly the same columns and their members are equal, they compare equal.

          Changed in version 2.6: Added iteration and equality (hashability).

          keys()

          This method returns a tuple of column names. Immediately after a query, it is the first member of each tuple in Cursor.description.

          New in version 2.6.

              下面舉例說明

          復制代碼
          cx.row_factory = sqlite3.Row

          = cx.cursor()

          c.execute('select * from catalog')
           <sqlite3.Cursor object at 0x05666680>

          = c.fetchone()

          type(r)
          <type 'sqlite3.Row'>

          r
          <sqlite3.Row object at 0x05348980>

          print r
          (0, 
          10, u'\u9c7c', u'Yu')

          len(r)
          4

          r[2]            #使用索引查詢
          u'\u9c7c'

          r.keys()
          ['id''pid''name''nickname']

           使用列的關鍵詞查詢
          In [43]: r['id']
          Out[43]: 0
          In [44]: r['name']
          Out[44]: u'\u9c7c'

           

          主站蜘蛛池模板: 合水县| 长宁区| 芒康县| 潞城市| 碌曲县| 瑞昌市| 册亨县| 五指山市| 西吉县| 沂南县| 德庆县| 茶陵县| 庆阳市| 新和县| 乳源| 曲麻莱县| 阜新| 旺苍县| 昭平县| 洛阳市| 南康市| 阜康市| 永嘉县| 呼伦贝尔市| 乌拉特后旗| 怀柔区| 垫江县| 中超| 通山县| 崇信县| 大悟县| 同德县| 平度市| 泽库县| 法库县| 长岭县| 福州市| 肇庆市| 醴陵市| 胶州市| 云和县|