我试图使用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)
答案 0 :(得分:1)
如果您使用的是Windows,请安装最新版本的Microsoft ODBC Driver for SQL Server,以确保支持DATE
和TIME
类型。
如果您使用的是Linux或macOS,请使用此page确定可用于您的发布的最新驱动程序。
使用参数占位符并将值作为date和time对象传递给当前日期时间值。
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上进行了测试。