将日期/时间从python插入SQL Server
我试图从XML中获取数据(成功),然后将该数据添加到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
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出现了问题。谢谢你的帮助。代码现在可以正常工作了。