从用户获取日期输入并存储它(python)

时间:2014-03-10 05:26:23

标签: python-2.7

我写了一个简单的脚本来获取用户的输入并将其存储在数据库中。 我也想要日期输入,但是出现了一些问题。 首先,我使用了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)')

1 个答案:

答案 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