我正在使用pypyodbc来提取数据,但我将简化此示例的数据。我的问题是我有一个名为475Election的列,当我从这个列中提取数据时,我在python中得到475作为值。例如:
TradeID ...Other Values... 475Election
1 ...Other Values... 0
但是当我使用python时,我得到了输出
1 ...Other Values... 475.0
我认为这可能是数据类型错误的结果,也可能是pypyodbc或一般的SQL问题。此外,当我在SQL中查询此信息时,它返回正确的值。 475Election是一种数据类型。
编辑* python中的代码
cursor = connection.cursor()
SQLCommand = "SELECT * FROM dbo.Trade"
cursor.execute(SQLCommand)
column_names = [d[0] for d in cursor.description]
try:
column_names.remove('ssma_timestamp')
except ValueError:
pass
SQLCommand = "SELECT " + ', '.join(column_names) + " FROM dbo.Trade"
cursor.execute(SQLCommand)
vals = cursor.fetchall()
SQLCommand_steve = "INSERT INTO dbo.Trade (" + ', '.join(column_names) + ") VALUES (" + ','.join('?' * len(column_names)) + ")"
print SQLCommand_steve
print vals
cursor_steve.executemany(SQLCommand_steve, vals)
connection_steve.commit()
connection_steve.close()
connection.close()
print 'done'
输出:
INSERT INTO dbo.Trade (tradeid, *redacted column names for compliance*, 475election) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
53, u'1', u'2016-01-26 10:11:55', *Redacted, *Redacted, True, *Redacted, *Redacted, False, False, None, None, None, 475.0
最后打印值的实际值是475election列,应为0.我使用的是Microsoft SQL Server Express(64位),操作系统是Microsoft Windows NT 6.1。版本为12.0.4422.0
答案 0 :(得分:0)
我想通了,列必须从[475Election]重命名为TaxElection,以阻止pypyodbc将值读取为整数而不是布尔值