PYODBC多个SQL查询



我正在使用 pyodbc ,我想从不同表中返回大量数据。最有效的方法是什么?我必须每次创建一个新连接还是可以重复使用?

import pyodbc
def docLauncher(connetStr):
    conn = pyodbc.connect(connetStr)
    cursor = conn.cursor()
    cursor.execute('SELECT COLUMN1 FROM TABLE1')
    companyName = cursor.fetchone()[0]
    conn1 = pyodbc.connect(connetStr)
    cursor1 = conn1.cursor()
    cursor1.execute('SELECT COLUMN2 FROM TABLE2')
    ver = cursor1.fetchone()[0]
    print(companyName)
    print(ver)

您不必创建新连接,只有一个就足够了。但是,如果您想返回大量数据,我将不会使用fetch函数。我发现这很耗时。这就是我访问pyodbc并返回数百万行以使用的方式(如果需要的话,您可以将其放入doclauncher()函数中):

import pyodbc
conn = pyodbc.connect(connection_string)
crsr = conn.cursor()
my_data = crsr.execute(sql_string)
for row in my_data:
    # do something with your data here
    print(row)
my_data_2 = crsr.execute(sql_string_2)
for row_2 in my_data_2:
    print(row_2)

如果要导出数据(例如,将其导出到CSV),这将非常有用。而不是这个:

for row in my_data:
    print(row)

您会这样做:

with open(file_name, 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow([x[0] for x in crsr.description])  # column headers
    for row in my_data:
        writer.writerow(row)

使用for循环将我的处理时间从一个多小时减少到仅几分钟(对于500万行x 30列〜3分钟)。

相关内容

  • 没有找到相关文章

最新更新