跳转到主要内容

Microsoft SQL Server的Django后端

项目描述

Microsoft SQL Server Django后端

欢迎使用MSSQL-Django第三方后端项目!

mssql-djangodjango-mssql-backend的分支。该项目为Django Web框架提供企业级数据库连接选项,支持Microsoft SQL Server和Azure SQL数据库。

我们感谢使该项目成为可能的社区,特别感谢贡献者:OskarPersson、michiya、dlo以及原始的Google Code django-pyodbc团队。展望未来,我们鼓励新旧贡献者参与此项目!

我们希望您喜欢使用MSSQL-Django第三方后端。

功能

依赖项

  • pyodbc 3.0或更高版本

安装

  1. 安装pyodbc 3.0(或更高版本)和Django

  2. 安装mssql-django

    pip install mssql-django
    
  3. 将您的Django应用程序或项目使用的settings.py文件中的ENGINE设置设置为'mssql'。

    'ENGINE': 'mssql'
    

配置

标准Django设置

以下条目在DATABASES字典中控制后端的行为

  • ENGINE

    字符串。它必须是"mssql"。

  • NAME

    字符串。数据库名。必需。

  • HOST

    字符串。SQL Server实例的"server\instance"格式。

  • PORT

    字符串。服务器实例端口。空字符串表示默认端口。

  • USER

    字符串。以"user"格式表示的数据库用户名。如果没有提供,则使用MS集成安全性。

  • PASSWORD

    字符串。数据库用户密码。

  • TOKEN

    字符串。作为用户或具有数据库访问权限的服务主体获取的访问令牌。例如,当使用azure.identity时,可以将DefaultAzureCredential().get_token('https://database.windows.net/.default')的结果传递。

  • AUTOCOMMIT

    布尔值。如果您想禁用Django的事务管理并实现自己的,请将此设置为False。

  • Trusted_Connection

    字符串。默认值为"yes"。如果需要,可以设置为"no"。

以下条目也适用于任何给定数据库级别设置字典中的TEST字典

  • NAME

    字符串。在运行测试套件时使用的数据库名称。如果使用默认值(None),则测试数据库将使用名称"test_" + NAME

  • COLLATION

    字符串。创建测试数据库时使用的排序规则。如果使用默认值(None),则测试数据库将分配SQL Server实例的默认排序规则。

  • DEPENDENCIES

    字符串。数据库的创建顺序依赖关系。有关更多详细信息,请参阅官方Django文档。

  • MIRROR

    字符串。在测试期间此数据库应镜像的数据库别名。默认值为None。有关更多详细信息,请参阅官方Django文档。

OPTIONS

字典。当前可用的键是

  • driver

    字符串。要使用的ODBC驱动程序(例如:"ODBC Driver 17 for SQL Server"、"SQL Server Native Client 11.0"、"FreeTDS"等)。默认值为"ODBC Driver 17 for SQL Server"。

  • isolation_level

    字符串。为每个数据库会话设置事务隔离级别。此条目的有效值有:READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSNAPSHOTSERIALIZABLE。默认值是None,表示没有为数据库会话设置隔离级别,将使用SQL Server的默认设置。

  • dsn

    字符串。可以使用命名的DSN代替HOST

  • host_is_server

    布尔值。仅在Unix/Linux下使用FreeTDS ODBC驱动程序时相关。

    默认情况下,当使用FreeTDS ODBC驱动程序时,在HOST设置中指定的值将在ODBC连接字符串的SERVERNAME组件中使用,而不是在SERVER组件中使用;这意味着此值应该是存在于freetds.conf FreeTDS配置文件中的数据服务器定义的名称,而不是主机名或IP地址。

    但是,如果此选项存在且其值为True,则此特殊行为将关闭。相反,将使用HOSTPORT选项建立到数据库服务器的连接,无需配置freetds.conf

    有关更多信息,请参阅https://www.freetds.org/userguide/dsnless.html

  • unicode_results

    布尔值。如果设置为True,则激活pyodbc的unicode_results功能,pyodbc返回的字符串始终是Unicode。默认值为False

  • extra_params

    字符串。为ODBC连接添加额外参数。格式为"param=value;param=value",可以将Azure AD身份验证(服务主体、交互式、Msi)添加到此字段。

  • collation

    字符串。在针对数据库执行文本字段查找时使用此校对名称。默认值为None,表示不添加校对指定符到您的查找SQL(将使用数据库的默认校对)。对于中文语言,可以将其设置为"Chinese_PRC_CI_AS"

  • connection_timeout

    整数。设置数据库连接过程的超时时间(秒)。默认值为0,表示禁用超时。

  • connection_retries

    整数。设置数据库连接过程的重试次数。默认值为5

  • connection_retry_backoff_time

    整数。设置数据库连接过程重试的退避时间(秒)。默认值为5

  • query_timeout

    整数。设置数据库查询的超时时间(秒)。默认值为0,表示禁用超时。

  • setencodingsetdecoding

    # Example
    "OPTIONS": {
            "setdecoding": [
                {"sqltype": pyodbc.SQL_CHAR, "encoding": 'utf-8'},
                {"sqltype": pyodbc.SQL_WCHAR, "encoding": 'utf-8'}],
            "setencoding": [
                {"encoding": "utf-8"}],
            ...
            },
    
  • return_rows_bulk_insert

    布尔值。设置后端是否可以返回批量插入的行。默认值为False,不允许后端从批量插入返回行。如果数据库有带有触发器的表,则必须设置为False以防止插入时出错。

    # Examples
    "OPTIONS": {
        # This database doesn't have any triggers so can use return
        # rows from bulk insert feature
        "return_rows_bulk_insert": True
    }
    
    "OPTIONS": {
        # This database has triggers so leave return_rows_bulk_insert as blank (False)
        # to prevent errors related to inserting and returning rows from bulk insert
    }
    

后端特定设置

以下项目级设置也控制后端的行为

  • DATABASE_CONNECTION_POOLING

    布尔值。如果设置为False,则不会激活pyodbc的连接池功能。

示例

以下是一个数据库设置的示例

    DATABASES = {
        'default': {
            'ENGINE': 'mssql',
            'NAME': 'mydb',
            'USER': 'user@myserver',
            'PASSWORD': 'password',
            'HOST': 'myserver.database.windows.net',
            'PORT': '',

            'OPTIONS': {
                'driver': 'ODBC Driver 17 for SQL Server',
            },
        },
    }

    # set this to False if you want to turn off pyodbc's connection pooling
    DATABASE_CONNECTION_POOLING = False

限制

以下功能目前尚未完全支持

  • 在迁移中更改模型字段从或到AutoField
  • Django annotate函数在某些情况下有浮点运算问题
  • 带有exists的annotate函数
  • 在order_by中的exists函数
  • datatimes的右幂和算术运算
  • 时区和timedeltas尚未完全支持
  • 具有外键约束的.rename字段/模型
  • 数据库级约束
  • 过滤索引
  • 日期提取函数
  • 将具有触发器的表和返回插入行的批量插入

JSONField 查找存在限制,更多详情请参阅这里

贡献

有关贡献的更多详细信息请参阅这里

本项目欢迎贡献和建议。大多数贡献需要您同意贡献者许可协议(CLA),声明您有权,并且实际上确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com

当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并相应地装饰 PR(例如,状态检查,评论)。只需遵循机器人提供的说明。您只需在整个使用我们 CLA 的所有存储库中做一次即可。

本项目已采用Microsoft 开源行为准则。有关更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com提出任何额外问题或意见。

安全报告指南

有关安全报告指南,请参阅本存储库中的SECURITY.md文件。

商标

本项目可能包含项目、产品或服务的商标或徽标。Microsoft 商标或徽标的授权使用受Microsoft 商标和品牌指南约束,必须遵守。在修改此项目的版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 的赞助。任何使用第三方商标或徽标的行为均受这些第三方政策约束。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

mssql_django-1.5.tar.gz (82.1 kB 查看哈希值)

上传时间

构建分发

mssql_django-1.5-py3-none-any.whl (100.4 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面