当前位置:   article > 正文

Django 连接 SQLServer_django使用odbc server连接

django使用odbc server连接

Windows环境

  • 安装驱动https://docs.microsoft.com/zh-cn/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15
  • 设置密码方式认证
    • 网络连接配置
  • 安装依赖
    pip install django-sqlserver django-pytds pyodbc django-pyodbc django-pyodbc-azure pypiwin32

    推荐在pycharm中手动安装

  • 配置ODBC数据源

  • settings.py 

    1. DATABASES = {
    2. 'default': {
    3. 'ENGINE': 'sql_server.pyodbc',
    4. 'NAME': 'xxxxxxx',
    5. 'USER': 'xxxxxxxxx',
    6. 'PASSWORD': 'xxxxxxxxx',
    7. 'HOST': 'localhost',
    8. 'PORT': '1433',
    9. 'OPTIONS': {
    10. 'driver':'SQL Server Native Client 10.0', # 要与上面配置的ODBC数据源名称一致,同时注意,driver 为小写,切记切记!!!!!之前就因为这个问题折腾了整整一天
    11. 'MARS_Connection': True, # 不能少了这项
    12. },
    13. },
    14. }

     

RedHat环境 

  • 须安装SQLServer驱动、unixODBC等依赖,具体操作见我另一篇随笔https://blog.csdn.net/weixin_38848757/article/details/114325932中关于SQLServer的配置部分。特别注意,由于必须依赖django-pyodbc-azure只支持Django>2.1 <=2.2,所以如果django版本不在这个区间的话基本就告别SQLServer了(据说高于2.2版本的django可以使用django-mssql-backend,小试了下也没成功,今后有需求可以参考https://blog.csdn.net/jackquin/article/details/104982314)。不要轻易尝试降级Django,别问我为什么。。。

    • 安装系统依赖

      yum -y install ncurses-devel

       

    • 安装py依赖

      pip install pyodbc django_pyodbc django-pyodbc-azure django-sqlserver

       

      • 等按照下面步骤安装freedtds之后可以测试一下

        1. import pyodbc
        2. DBCONNECTSTR = 'DRIVER={/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.7.so.1.1};SERVER=139.123.1.102;port=1433;DATABASE=BDS;UID=sa;PWD=root;TDS_Version=7.4;'
        3. conn=pyodbc.connect(DBCONNECTSTR)
        4. conn.execute('select getdate()').fetchall()
        5. # [(datetime.datetime(2021, 3, 10, 10, 10, 14, 263000), )]
        6. conn.close()

         

    • 安装freetds

      1. wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-1.2.18.tar.gz
      2. tar -zxf freetds-1.2.18.tar.gz
      3. cd freetds-1.2.18/
      4. ./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib # –with-tdsver 设置TDS版本;–enable-msdblib 是否允许Microsoft数据库函数库
      5. make && make install

       

      • 测试

        1. /usr/local/freetds/bin/tsql -H 139.123.1.102 -p 1433 -U sa -P root
        2. # locale is "en_US.UTF-8"
        3. # locale charset is "UTF-8"
        4. # using default charset "UTF-8"
        5. 1> select @@version
        6. 2> go
        7. # Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
        8. # Jun 28 2012 08:36:30
        9. # Copyright (c) Microsoft Corporation
        10. # Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
        11. #
        12. # (1 row affected)
        13. 1> ^C
        14. # 或者可以配置一个固定的数据源
        15. vim /usr/local/freetds/etc/freetds.conf
        16. [TestDB]
        17. host = 139.123.1.102
        18. port = 1433
        19. tds version = 7.4 # 据说这个版本号只要不小于实际版本好就行,我的freetds是7.4的
        20. :wq
        21. /usr/local/freetds/bin/tsql -S TestDB -U sa -P root # 连接正常即可

         

    • 配置unixODBC

      • 配置odbcinst.ini(该文件默认是空的)

        1. find / -name libtdsodbc.so.0
        2. # /usr/local/freetds/lib/libtdsodbc.so.0
        3. vim /etc/odbcinst.ini
        4. # 插入以下配置,其中Driver、Setup路径为上面搜索出的目录
        5. [FreeTDS]
        6. Description=FreeTDS unixODBC Driver
        7. Driver=/usr/local/freetds/lib/libtdsodbc.so.0
        8. Setup=/usr/local/freetds/lib/libtdsodbc.so.0
        9. UsageCount=1

        配置好后用odbcinst -q -d命令测试一下

      • 配置 odbc.ini(该文件默认也是空的)

        1. [MQ1]
        2. Driver=FreeTDS
        3. Server=139.123.1.102
        4. User=dbcheck
        5. TDS_Version=7.4
        6. Port=1433

        配置好后isql  MQ1 sa root测试一下

    • 配置Django工程setting.py

      1. DATABASES = {
      2. 'default': {
      3. 'NAME': 'BDS',
      4. 'ENGINE': 'sql_server.pyodbc',
      5. 'HOST': '139.123.1.102',
      6. 'USER': 'sa',
      7. 'PASSWORD': 'root',
      8. 'PORT': '1433',
      9. 'default-character-set': 'utf8',
      10. 'OPTIONS': {
      11. 'AUTOCOMMIT': True,
      12. 'host_is_server': True,
      13. 'unicode_results': True,
      14. 'driver': 'FreeTDS',
      15. 'extra_params': 'TDS_VERSION=7.4', # 注意这个版本号
      16. }
      17. }
      18. }

       

    • 参考文献:https://my.oschina.net/guol/blog/182295 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/598018
推荐阅读
相关标签
  

闽ICP备14008679号