标签: django-pyodbc

有没有办法在django中使用GUID?

我在SQL Server中有几个由GUID连接的表.现在,我发现了一些自定义字段来添加对django中GUID的支持,但是如果可能的话,我倾向于回避在博客文章中使用代码.除了加入GUID之外,我不会对GUID做任何事情,也许会为新条目分配GUID(尽管这是可选的).有没有办法允许使用django的内置类型?就像我可以使用某种char字段或二进制字段和"技巧"django加入使用它?

如果有任何帮助,我正在使用django-pyodbc.

sql-server django django-pyodbc

14
推荐指数
3
解决办法
8594
查看次数

Windows上的Django-pydobc SQL服务器连接问题

另一位开发人员和我正在另一台服务器上使用旧版SQL服务器数据库(SQLEXPRESS)设置django(v1.4.2)项目.到目前为止,我们已经能够使用django-pyodbc从linux和mac连接数据库,并使用django-mssql从运行Windows 7的笔记本电脑连接到数据库.我想在笔记本电脑上使用django-pyodbc来保持环境同步.

在笔记本电脑上:

  • 安装pyodbc(3.0.6)并在非django .py脚本中我可以连接并运行sql语句
  • 通过下载zip下载django-pyodbc 1.4; 我不确定我是否正确安装:
    • 我解压缩文件,并运行顶部目录中的setup.py文件; 它将一个sql_server目录放在/ lib/site-packages目录中
  • 将此sql_server目录复制到/ django/db/backends
  • 创建了一个指向/ django/db/backends/sql_server的PYTHONPATH环境变量
    • 不确定它是否应该指向/ site-packages/sql_server而不是?
  • 创建ODBC数据源(系统DSN)
    • 测试连接选项有效
  • 编辑settings.py中的DATABASE条目几乎与linux版本完全相同(详情如下)

所以,它不起作用,我得到以下错误信息,并不知道下一步该怎么做:

('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53); [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)')
Run Code Online (Sandbox Code Playgroud)

我设置了django settings.py文件,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sql_server.pyodbc',
        'NAME': 'test',
        'USER': 'test',
        'PASSWORD': 'something_else',
        'HOST': 'mssqlx',
        'PORT': '12345',
        'OPTIONS': {
            'driver': 'SQL Server',
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

在linux上,我的设置文件有一个DATABASES条目,如下所示: …

windows sql-server django django-pyodbc

9
推荐指数
1
解决办法
2366
查看次数

SQL Server上的pyodbc - 如何进行插入并获取行ID?

我正在使用pyodbc和SQL Server 2000.

我希望能够插入一行并获得自动递增的行ID值?有任何想法吗?

这是我到目前为止所拥有的:

cursor.execute("insert into products(id, name) values ('pyodbc', 'awesome library')")
cnxn.commit()
Run Code Online (Sandbox Code Playgroud)

python sql-server pyodbc django-pyodbc

6
推荐指数
1
解决办法
5939
查看次数

django-pyodbc vs django-mssql

这真的是标题.我想对MSSQL 2005运行Django.两者看起来都相当活跃并且是最新的.我似乎无法看到任何一个独特的点.

  • 任何人都可以推荐一个吗?
  • 以后在两者之间交换是否微不足道?
  • 他们准备好生产吗?

谢谢!

sql-server django database-connection django-pyodbc django-mssql

5
推荐指数
1
解决办法
2089
查看次数

防止 Django 更新 MSSQL 中的标识列

我正在使用 MSSQL 中的旧数据库。我们有一个表,其中有两列导致我出现问题:

class Emp(models.Model):  
    empid = models.IntegerField(_("Unique ID"), unique=True, db_column=u'EMPID')  
    ssn = models.CharField(_("Social security number"), max_length=10, primary_key=True, db_column=u'SSN') # Field name made lowercase.  
Run Code Online (Sandbox Code Playgroud)

所以该表以 ssn 列作为主键,django 生成的 SQL 更新代码的相关部分是这样的:

UPDATE [EMP] SET [EMPID] = 399, 
......... 
WHERE [EMP].[SSN] = 2509882579 
Run Code Online (Sandbox Code Playgroud)

问题是 EMP.EMPID 是 MSSQL 中的一个标识字段,因此每当我尝试将更改保存到现有员工时,pyodbc 都会抛出此错误:

ProgrammingError: ('42000', "[42000] [Microsoft][SQL Native Client][SQL Server]C
annot update identity column 'EMPID'. (8102) (SQLExecDirectW); [42000] [Microsof
t][SQL Native Client][SQL Server]Statement(s) could not be prepared. (8180)")
Run Code Online (Sandbox Code Playgroud)

将 EMP.EMPID 作为标识对程序的任何内容都不是至关重要的,因此通过创建临时列和复制、删除、重命名来删除它似乎是合乎逻辑的事情。这为将老客户转移到 Django 中创建了一个额外的步骤,所以我的问题是,有什么方法可以防止 Django 在我对这个表进行更新时生成 '[EMPID] …

sql-server django django-models pyodbc django-pyodbc

5
推荐指数
1
解决办法
1578
查看次数

使用Django pyodbc SQLSERVER问题

我正在尝试将django与sqlserver连接.我已经安装了python odbc和django-odbc.

我的数据数据库配置(settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'EDAS',                      # Or path to database file if using sqlite3.
        'USER': 'sa',                      # Not used with sqlite3.
        'PASSWORD': '1324',                  # Not used with sqlite3.
        'HOST': 'DBIO01-HP',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '1433'                      # Set to empty string for default. Not used with sqlite3.
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行服务器时,我收到此错误:

C:\ edas> python manage.py runserver

Validating models...

Unhandled exception …
Run Code Online (Sandbox Code Playgroud)

django pyodbc django-pyodbc

5
推荐指数
1
解决办法
4448
查看次数

尝试使用django-pyodbc-azure连接到MSSQL会导致找不到文件错误

我认为我的问题或多或少是试图从在Linux上运行的django查询SQL Server的重复- 无法打开lib'/ path/to/libtdsodbc.so',但答案完全没有用.

我使用以下东西:

  1. Ubuntu 15.04
  2. Python3
  3. Django 1.9 (通过pip3安装)
  4. freetds-dev 0.91-6build1 通过apt-get安装
  5. django-pyodbc-azure/ django-pyodbc通过pip3安装
  6. MSSQL 2012

尝试连接时,执行python3 manage.py inspectdb以下操作:

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 199, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.4/dist-packages/django/db/backends/base/base.py", line 171, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.4/dist-packages/sql_server/pyodbc/base.py", line 302, in get_new_connection
    timeout=timeout)
pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'FreeTDS' : file not found (0) (SQLDriverConnect)")

The above exception was the direct cause of the …
Run Code Online (Sandbox Code Playgroud)

python sql-server django django-pyodbc django-pyodbc-azure

5
推荐指数
1
解决办法
4337
查看次数

如何在python中建立连接以连接as400并使用参数调用任何as400程序

任何人都知道如何在 python 中建立连接来连接 as400 iseries 系统并使用参数调用任何 as400 程序。

例如如何通过python连接as400来创建库。我想从 python 脚本调用“ CRTLIB LIB(TEST) ”。

我可以通过 pyodbc 包连接到 DB2 数据库。

这是我连接 DB2 数据库的代码。

import pyodbc

connection = pyodbc.connect(
    driver='{iSeries Access ODBC Driver}',
    system='ip/hostname',
    uid='username',
    pwd='password')
c1 = connection.cursor()

c1.execute('select * from libname.filename')
for row in c1:
    print (row)
Run Code Online (Sandbox Code Playgroud)

django-pyodbc db2-400 python-2.7 python-3.x ibm-midrange

5
推荐指数
1
解决办法
2万
查看次数

django-pyodbc:MSSQL unicode问题

我有问题,使用的Django的用户登录django-pyodbc,freetdsunixodbc.我可以毫无问题地运行syncdb和连接pyodbc.

我得到的完整错误是:

 ('42000', '[42000] [FreeTDS][SQL Server]Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (4004) (SQLExecDirectW)
Run Code Online (Sandbox Code Playgroud)

freetds conf文件:

[PS123]
host = <ip number>
port = 2254
tds version = 8.0
instance = T_INS01
client charset = UTF-8

# somebody suggested this had to be global so I put it here as well
[global]
client …
Run Code Online (Sandbox Code Playgroud)

sql-server django odbc freetds django-pyodbc

3
推荐指数
1
解决办法
1770
查看次数

django exclude 的性能问题

我有一个 Django 1.8 应用程序,我使用的是 MsSQL 数据库,pyodbc 作为数据库后端(使用“django-pyodbc-azure”模块)。

我有以下型号:

class Branch(models.Model):
    name = models.CharField(max_length=30)
    startTime = models.DateTimeField()

class Device(models.Model):
    uid = models.CharField(max_length=100, primary_key=True)
    type = models.CharField(max_length=20)
    firstSeen = models.DateTimeField()
    lastSeen = models.DateTimeField()

class Session(models.Model):
    device = models.ForeignKey(Device)
    branch = models.ForeignKey(Branch)
    start = models.DateTimeField()
    end = models.DateTimeField(null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

我需要查询会话模型,我想排除一些具有特定设备值的记录。所以我发出以下查询:

sessionCount = Session.objects.filter(branch=branch)
                          .exclude(device__in=badDevices)                                             
                          .filter(end__gte=F('start')+timedelta(minutes=30)).count()
Run Code Online (Sandbox Code Playgroud)

badDevices 是一个预填充的设备 ID 列表,大约有 60 个项目。

badDevices = ['id-1', 'id-2', ...]
Run Code Online (Sandbox Code Playgroud)

此查询大约需要 1.5 秒才能完成。如果我从查询中删除排除项,大约需要 250 毫秒。

我为这个查询集打印了生成的 sql,并在我的数据库客户端中进行了尝试。在那里,两个版本都在大约 250 毫秒内执行。

这是生成的 SQL:

SELECT [session].[id], [session].[device_id], [session].[branch_id], [session].[start], [session].[end] …
Run Code Online (Sandbox Code Playgroud)

sql-server django django-pyodbc

3
推荐指数
1
解决办法
1631
查看次数

django-pyodbc-azure - 如何使用模式

我正在使用 django-pyodbc-azure ( https://github.com/michiya/django-pyodbc-azure ),一切正常。但是,当我迁移模型时,会在 SQL Server 数据库上创建一个名为“dbo”的新架构。我想使用已经存在的“sp”模式,有什么方法可以设置工作模式?

提前致谢。

django django-pyodbc django-pyodbc-azure

3
推荐指数
1
解决办法
2704
查看次数

将 Django 连接到 Microsoft SQL 数据库

我想将我的 django 应用程序连接到 MS-SQL Server 2014 数据库。我写了这段代码来建立连接。

 DATABASES = {
'default': {
    'ENGINE': 'sql_server.pyodbc',
    'HOST':'DESKTOP-6UNRAN0',
    'PORT':'1433',
    'NAME': 'MOVIE',
    'COLLATION' : '',

  }
}
Run Code Online (Sandbox Code Playgroud)

我已经安装了 sql_server.pyodbc

 pip install django-pyodbc-azure
Run Code Online (Sandbox Code Playgroud)

如文档https://pypi.org/project/django-pyodbc-azure/ 中所述。我仍然收到错误

django.db.utils.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)')

django django-pyodbc sql-server-2014 pypyodbc django-mssql-backend

2
推荐指数
1
解决办法
5118
查看次数

使用django连接到旧的informix数据库

我正在尝试使用Django连接到现有的Informix数据库,我使用django-pyodbc-azure通过odbc处理连接,在python解释器中尝试时连接工作正常:

>>>import pyodbc 
>>>conn = pyodbc.connect('DSN=test_ifx;UID=test;PWD=test')
>>>curs = conn.cursor()
>>>curs.execute("select * from someTable")
<pyodbc.Cursor object at 0x0052E520>
Run Code Online (Sandbox Code Playgroud)

所以这项工作很好但是在django中我创建了这样的数据库连接参数:

DATABASES = {
    'default' : {
        'ENGINE' : 'sql_server.pyodbc',
        'NAME' : 'test',
        'USERNAME' : 'test',
        'PASSWORD' : 'test',
        'PORT' : '1260',
        'OPTIONS':{
            'dsn' : 'test_ifx'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我启动服务器时,我收到以下错误:

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0353DED0>
Traceback (most recent call last):
  File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
    self.connect()
  File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\PatrickStewball\AppData\Local\Programs\Python\Python37-32\lib\site-packages\sql_server\pyodbc\base.py", …
Run Code Online (Sandbox Code Playgroud)

django informix pyodbc django-pyodbc django-pyodbc-azure

1
推荐指数
1
解决办法
283
查看次数