跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. odoo使用tds_fdw扩展功能读取外部数据库数据编码问题

odoo使用tds_fdw扩展功能读取外部数据库数据编码问题

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
6 帖子 2 发布者 1.5k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • W 离线
    W 离线
    wangss
    写于 最后由 编辑
    #1

    用tds_fdw访问sqlserver中的表单数据(数据有中文)遇到了编码问题,在odoo代码中执行查询指令:
    sql = “select * from ext_erp_cicmp”
    self.env.cr.execute(sql)
    result = cr.dictfetchall()
    直接报错:‘utf-8’ codec can’t decode byte 0xb6 in position 0:…
    用pgadmin查询:server_encoding 和client_encoding 结果都是’UTF8’

    百度查到:
    由于MS SQL Server默认编码为GBK,而且Postgresql编码变UTF8,需要改变编码显示为GBK才能正常显示中文,但客户端设置set client_encoding to ‘GBK’后,在pgadmin中查询 “select * from ext_erp_cicmp”会报错22021

    1 条回复 最后回复
    0
    • 静静静 离线
      静静静 离线
      静静
      写于 最后由 编辑
      #2

      :hushed_face: :hushed_face: :hushed_face: 直接用odoo的cr 是不行的,odoo的cr 是psotgresql的游标,你要访问其他类型的数据库,要 安装 python插件,访问的。

      1 条回复 最后回复
      0
      • W 离线
        W 离线
        wangss
        写于 最后由 编辑
        #3

        @静静 谢谢!
        我安装pymssql,已经可以不通过tds_fdw扩展读取外部数据库数据。
        但如果我想在当前的postgresql数据库中做一个视图,调用外部sqlserver数据库中的表单,还没找到方法。

        1 条回复 最后回复
        0
        • 静静静 离线
          静静静 离线
          静静
          写于 最后由 编辑
          #4

          根本听不懂你说的啥。。。如果我想在当前的postgresql数据库中做一个视图 这是啥意思? 调用外部sqlserver数据库中的表单 这又是啥意思,视图中调用别的数据库?。

          W 1 条回复 最后回复
          0
          • W 离线
            W 离线
            wangss
            在 回复了 静静 最后由 编辑
            #5

            @静静 意思就是odoo中创建一个视图,视图的数据直接通过调用外部扩展数据库中的表连接获得,这样就不需要本地创建表而把外部数据库的数据复制过来了

            1 条回复 最后回复
            0
            • W 离线
              W 离线
              wangss
              写于 最后由 编辑
              #6

              问题解决:
              CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw options(servername ‘192.168.1.27’, character_set ‘utf-8’,port ‘1433’,database ‘001Test1’,tds_version ‘7.1’)
              在创建mssql_svr 时,添加参数 tds_version ‘7.1’

              1 条回复 最后回复
              0

              • 登录

              • 没有帐号? 注册

              • 登录或注册以进行搜索。
              • 第一个帖子
                最后一个帖子
              0
              • 版块
              • 标签
              • 热门
              • 用户
              • 群组