回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用<code>manage.py syncdb</code>将iis7上远程运行的sqlserver2008r2数据库与在windows7上运行python3.3的django1.6应用程序同步。但是我遇到了错误</p>
<pre><code>TypeError: The first argument to execute must be a string or unicode query.
</code></pre>
<p>我已经安装了django pyodbc0.2.3和pyodbc3.0.7设置.py<code>DATABASES</code>作为</p>
^{pr2}$
<p>您可能会猜到,<code>USER</code>和{<cd4>}被省略了,因为我需要<code>Integrated_Security=Yes</code>和{<cd6>}作为连接。<code>OPTIONS</code>似乎必须是非空的,因为django pyodbc初始化类<code>DatabaseWrapper</code>的方式,即使{<cd9>}在Windows上是不相关的。在</p>
<p>我收到的全部错误是:</p>
<pre><code>Traceback (most recent call last):
File "Z:\python\ns_reports_server\manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\__init__.py", line 399, in execute_from_command_line
utility.execute()
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\base.py", line 285, in execute
output = self.handle(*args, **options)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\base.py", line 415, in handle
return self.handle_noargs(**options)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\core\management\commands\syncdb.py", line 57, in handle_noargs
cursor = connection.cursor()
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\db\backends\__init__.py", line 157, in cursor
cursor = self.make_debug_cursor(self._cursor())
File "C:\Python33\lib\site-packages\django_pyodbc-0.2.3-py3.3.egg\django_pyodbc\base.py", line 290, in _cursor
File "C:\Python33\lib\site-packages\django_pyodbc-0.2.3-py3.3.egg\django_pyodbc\operations.py", line 31, in _get_sql_server_ver
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\db\backends\util.py", line 69, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python33\lib\site-packages\django-1.6.1-py3.3.egg\django\db\backends\util.py", line 51, in execute
return self.cursor.execute(sql)
File "C:\Python33\lib\site-packages\django_pyodbc-0.2.3-py3.3.egg\django_pyodbc\base.py", line 410, in execute
TypeError: The first argument to execute must be a string or unicode query.
</code></pre>
<p>如果您从顶部查看第十次调用的源代码,<a href="https://github.com/lionheart/django-pyodbc/blob/5cc782054f4305f10d45fca25d89f189117fdc98/django_pyodbc/operations.py#L31" rel="nofollow">django_pyodbc/operations.py</a>正在查询SQL Server版本的连接</p>
<pre><code>cur.execute("SELECT CAST(SERVERPROPERTY('ProductVersion') as varchar)")
</code></pre>
<p>然而,在调用堆栈的末尾,这个要执行的sql已经消失了。<a href="https://github.com/lionheart/django-pyodbc/blob/5cc782054f4305f10d45fca25d89f189117fdc98/django_pyodbc/base.py#L410" rel="nofollow">django_pyodbc/base.py</a>有</p>
<pre><code>return self.cursor.execute(sql, params)
</code></pre>
<p>其第一个参数未被识别为“字符串或unicode查询”。在</p>
<p>Python、django和sqlserver对我来说都是新的,所以答案可能很明显,但我一辈子都无法解决。干杯。在</p>