关于pyodbc执行SQL语句时本地与远程计算逻辑的咨询
pyodbc连接远程SQL Server的执行逻辑说明
代码1的执行逻辑
- 代码中的
SELECT columnA*2 WHERE columnB!=0 FROM tableA INTO tableB语句会完整发送至远程serverA执行。 - 所有操作(筛选
columnB!=0、计算columnA*2、创建新表tableB)都在远程数据库服务器上完成,本地Jupyter Notebook仅负责通过pyodbc传递SQL指令、提交事务及关闭连接,不参与任何数据处理或表创建操作。
代码2的执行逻辑
- 这段代码会将查询语句发送至服务器执行,仅返回计算后的结果集到本地,不会拉取整个
tableA到本地计算。 pd.read_sql会通过pyodbc把完整SQL语句传递给SQL Server,由服务器完成数据筛选和字段计算,之后仅把符合条件的结果返回给本地,再转换为DataFrame。核心查询逻辑完全在数据库端处理,本地仅接收最终结果。
原代码参考
代码1
import pyodbc query="select columnA*2 where columnB!=0 from tableA into tableB" connection = pyodbc.connect('Driver={driverA};''Server=serverA;''Trusted_Connection=yes;') cursor = connection.cursor() cursor.execute(query) connection.commit() cursor.close() connection.close()
代码2
cnxn = pyodbc.connect("Driver= {driverA};" "Server=serverA;" "Database=databaseA;" "Trusted_Connection=yes;") diagramFinal = pd.read_sql("""select columnA*2 where columnB!=0 from tableA""", cnxn) cnxn.close()
内容的提问来源于stack exchange,提问作者henry
相关产品推荐
相关产品推荐

