无法通过pyodbc向sql server插入日期和时间

时间:2014-06-30 13:37:54

标签: python sql date time pyodbc

我试图使用python语言在Linux(raspbian)环境中向SQL服务器插入日期和时间。到目前为止,我能够连接到MS Sql,我还创建了一个表,并使用pyodbc。

#! /user/bin/env python
import pyodbc 
import datetime

dsn = 'nicedcn'
user = myid
password = mypass
database = myDB

con_string = 'DSN=%s;UID=%s;PWD=%s;DATABASE=%s;' % (dsn, user, password, database)
cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()

string = "CREATE TABLE Database3([row name] varchar(20), [my date] date), [my time]    time)"
cursor.execute(string)
cnxn.commit()

这部分没有任何错误。这意味着我已经成功创建了一个表吗?或者有任何问题吗?

我尝试以这种方式添加日期和时间。

   now = datetime.datetime.now()
    d1 = now.date()
    t2 = now.strftime("%H-%M-%S")
    cursor.execute("insert into Database3([row name], [my date], [my time]) values (?,?,?)", 
    ('new1', d1, t2))
    cnxn.commit()

但是我得到了这个错误。 pyodbc.ProgrammingError:

  

(' HY004',' [HY004] [FreeTDS] [SQL Server]无效的数据类型(O)   (的SQLBindParameter)&#39)

请帮助我。提前谢谢

1 个答案:

答案 0 :(得分:1)

如果您使用的是Windows,请安装最新版本的Microsoft ODBC Driver for SQL Server,以确保支持DATETIME类型。

如果您使用的是Linux或macOS,请使用此page确定可用于您的发布的最新驱动程序。

使用参数占位符并将值作为datetime对象传递给当前日期时间值。

now = datetime.datetime.now()
sql = "insert into Database3([row name], [my date], [my time]) values (?,?,?)"
cursor.execute(sql, ('new1', now.date(), now.time()))
cnxn.commit()

请注意,上述代码仅在Windows上进行了测试。