Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用python pyodbc查询大容量插入数据_Python_Sql Server_Pyodbc - Fatal编程技术网

无法使用python pyodbc查询大容量插入数据

无法使用python pyodbc查询大容量插入数据,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,我正在努力将.csv中的数据插入SQL Server DB表。在SSMS中执行以下查询时,效果非常好: BULK INSERT dbo.Technical_Indicators_Regime_Work_SP500_Constituents_Daily_New FROM 'C:\Users\krakowi\Desktop\S&P_Weights_FactSet_reformatted.csv' WITH (FIELDTERMINATOR = ';') 我认为类似的代码可以很容易地转换

我正在努力将.csv中的数据插入SQL Server DB表。在SSMS中执行以下查询时,效果非常好:

BULK INSERT dbo.Technical_Indicators_Regime_Work_SP500_Constituents_Daily_New 
FROM 'C:\Users\krakowi\Desktop\S&P_Weights_FactSet_reformatted.csv' 
WITH (FIELDTERMINATOR = ';')
我认为类似的代码可以很容易地转换为以下代码:

def load_csv(load_sql):
    '''
    This function will load table from csv file according to
    the load SQL statement through ODBC
    '''
    try:
        cnxn = pyodbc.connect('Driver={SQL Server};'
                              'Server=localhost\SQLEXPRESS;'
                              'Database=test;'
                              'Trusted_Connection=yes;')
        cursor = cnxn.cursor()
        # Execute SQL Load Statement
        cursor.execute(load_sql)
        print('Loading table completed successfully.')
        cnxn.close()

    except Exception as e:
        print("Error: {}".format(str(e)))



# Execution
load_sql = "BULK INSERT dbo.Technical_Indicators_Regime_Work_SP500_Constituents_Daily_New FROM 'C:\\Users\\krakowi\\Desktop\\S&P_Weights_FactSet_reformatted.csv' WITH(FIELDTERMINATOR = ';')"

load_csv(load_sql)

但不幸的是,什么也没有发生(没有插入记录),尽管它说已完成,没有任何错误。我做错了什么?

是否需要使用批量?我不想逐个插入记录,因为这太长了。有没有其他方法不使用大容量实现此目的?但也许您可以使用ExecuteMy(语句、参数)尝试在连接后立即添加
cnxn.autocommit=True
。@GordThompson谢谢,这很有效!