将日期/时间从python插入SQL Server

将日期/时间从python插入SQL Server,python,sql-server,Python,Sql Server,我试图从XML中获取数据(成功),然后将该数据添加到SQL Server数据库(失败)。我的代码如下: def writeToSQL(): server = 'server' database = 'database' username = 'username' password = 'password' driver = '{SQL Server}' connection = pyodbc.connect('DRIVER='+driver+';S

我试图从XML中获取数据(成功),然后将该数据添加到SQL Server数据库(失败)。我的代码如下:

def writeToSQL():
    server = 'server'
    database = 'database'
    username = 'username'
    password = 'password'
    driver = '{SQL Server}'
    connection = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
    cursor=connection.cursor()
    SQLCommand = 'INSERT INTO QuartetSingleTesting (GURID, DataTime, xHorse, yHorse, zHorse, wHorse, Pay, [Source], LocalTime) VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)'
    cursor.execute(SQLCommand, [argv[8], thisDataTime, argv[1], argv[2], argv[3], argv[4], thisPayout, str(4)])
    connection.commit()
    connection.close()

writeToSQL()
这现在起作用了


谢谢你的建议。

你必须这样做:

SQLCommand= 'INSERT INTO QuartetSingleTesting (GURID, DataTime, xHorse, yHorse, zHorse, wHorse, Pay, [Source], LocalTime) VALUES (?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)'
cursor.execute(SQLCommand, [ argv[8] , thisDataTime , argv[1], argv[2], argv[3] , argv[4], thisPayout , str(4)])

也就是说,对于您的参数,使用
表示它们将单独提供。然后在数组中提供它们作为要执行的第二个参数。

使用准备好的语句,不要粘贴SQL请阅读!更新问题以反映最新代码和新错误。Source是一个整数字段,但切换到4或int(4)作为最后一个参数不会改变问题ThisDataTime的格式为2018-04-17 18:14:13。这可能是个问题吗?@HKSaddler您所有列的数据类型是什么?所有参数的值是多少?一个常见的问题是:空字符串不能转换为数字-如果你想要零,你必须传递
'0'
,如果你想要
NULL
,你必须传递
None
。我最后的输入错误是使用argv[7]而不是argv[8]。argv[7]是一个日期,而argv[8]是一个字符串。SQLServer出现了问题。谢谢你的帮助。代码现在可以正常工作了。