找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1837|回复: 0

[求助] 求解:把excel数据写入sql数据库中 insert 时出错

1

主题

1

帖子

1

积分

贫民

积分
1
春光 发表于 2019-3-21 16:29:27 | 显示全部楼层 |阅读模式
#!usr/bin/env python
# encoding:utf-8

import pyodbc
import os
import xlrd
from datetime import date, datetime



#cursor.executemany("select * from dbo.[高负荷-支撑平台] where 开始时间 between '2019-3-1' and '2019-3-1'")g
#row =cursor.fetchone()
#print(row)
workbook = xlrd.open_workbook('3月高负荷test.xlsx')
sheet = workbook.sheet_by_index(0)
data_list = []
row_list = []
nRows = sheet.nrows  # 行数
nCols = sheet.ncols  # 列数
for i in range(1, nRows):
    row_list = []
    for j in range(nCols):
        # 获取第i行,第j列的值
        data_value = sheet.cell(i, j).value
        # 获取第i行,第j列的类型
        # ctype :  0 empty, 1 string ,2 number, 3 date, 4 boolean 5,error
        data_type = sheet.cell(i, j).ctype
        if data_type == 2:
            # 将字符串转为number
            data_value = str(int(data_value))
        if data_type == 3:
            # 对读取数据表中日期列 进行格式化
            date_t = xlrd.xldate_as_tuple(data_value, workbook.datemode)
            data_value = date(*date_t[:3]).strftime('%Y/%m/%d')
        row_list.append(data_value)
    data_list.append(row_list)
print(data_list)
conn = pyodbc.connect('DSN=价值建网;UID=sa;PWD=h00367456',timeout=300)
cursor =conn.cursor()

val = ''
for i in range(0, nCols):
    val = val + '%s,'
result =cursor.executemany('insert into 高负荷-PRS(日期, 小区, 分公司, 分公司1) values(' + val[:-1] + ")", data_list)
print(result)
conn.commit()
conn.close()



报错


    result =cursor.executemany('insert into 高负荷-PRS values(' + val[:-1] + ")", data_list)
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 4 parameters were supplied', 'HY000')

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表