我写了一个简单的脚本来获取用户的输入并将其存储在数据库中。 我也想要日期输入,但是出现了一些问题。 首先,我使用了datetime.date()函数并传递了日期但是它引发了一些错误。 我不明白为什么?
import pyodbc
import datetime
class data:
def __init__(self):
self.name=raw_input( "Enter Name: ")
self.section=raw_input( "Enter section: ")
self.eon=datetime.date(1943,3, 13) # This is in the requested 'YYYY-MM-DD' format.
a=data()
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=KIRAN-PC;DATABASE=testing')
cursor = cnxn.cursor()
cursor.execute("Insert into Students (Name,Section,Enrol_On) Values (?,?,?)",(a.name,a.section,a.eon))
cnxn.commit()
错误:
Enter Name: Tim
Enter section: A
Traceback (most recent call last):
File "C:/Python33/data2.py", line 15, in <module>
cursor.execute("Insert into Students (Name,Section,Enrol_On) Values (?,?,?)",(a.name,a.section,a.eon))
Error: ('HYC00', '[HYC00] [Microsoft][ODBC SQL Server Driver]Optional feature not implemented (0) (SQLBindParameter)')
答案 0 :(得分:1)
将导入从from datetime import datetime
更改为import datetime
。使用当前代码,您可以从模块datetime
导入类datetime
,并使用错误的参数从此类调用date
方法。但是你想在date
模块中调用datetime
类的构造函数。
更新以回复您的修改
根据https://code.google.com/p/pyodbc/issues/detail?id=204:
在Windows上,您需要使用DRIVER = {SQL Server Native Client 10.0}来获取理解ODBC日期类型的驱动程序。
您当前的驱动程序SQL Server
无法理解如何将date
数据类型传递到您的数据库。
您还必须注意,在您的数据库中,Enrol_On
列的类型为SQL_TYPE_DATE
。有关python数据类型到SQL类型的映射,请参阅https://code.google.com/p/pyodbc/wiki/DataTypes。