简体   繁体   English

Python SQL 查询执行

[英]Python SQL Query Execution

I trying to run a SQL query to perform a lookup between table and add column and update the result in new table in SQL and then pass the new table in pandas dataframe.我尝试运行 SQL 查询以在表和添加列之间执行查找并更新 SQL 中新表中的结果,然后在 Pandas 数据框中传递新表。

But when i execute i get the following error:但是当我执行时,我收到以下错误:

"

File "C:\Users\Sundar_ars\Desktop\Code\SQL_DB_Extract_1.py", line 27, in <module>
df1 = pd.read_sql(Sql_Query,conn)
  File "C:\Users\Sundar_ars\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\sql.py", line 602, in read_sql
    return pandas_sql.read_query(
  File "C:\Users\Sundar_ars\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\sql.py", line 2117, in read_query
    columns = [col_desc[0] for col_desc in cursor.description]
TypeError: 'NoneType' object is not iterable"

Below is the Code:下面是代码:

import pypyodbc
import pandas as pd

SERVER_NAME ='DESKTOP-LBM9IMO\SQLEXPRESS'
DATABASE_NAME='721991dc-b510-40b2-ac5b-4d005a3cfd14'


conn = pypyodbc.connect("""
    Driver={{SQL Server Native Client 11.0}};
    Server={0};
    Database={1};
    Trusted_Connection=yes;""".format(SERVER_NAME, DATABASE_NAME)
    )

Sql_Query = """
SELECT [EventFrequency].[ResultID]
      ,[EventFrequency].[EventFrequency]
      ,[EventFrequency].[ImmediateIgnitionFrequency]
      ,[EventFrequency].[DelayedIgnitionFrequency]
      ,[Result].[OnshoreCaseID]
INTO [%s].[SafetiRisk].[UpdatedEventFreq]
FROM [%s].[SafetiRisk].[EventFrequency]
LEFT OUTER JOIN [%s].[SafetiRisk].[Result]
ON [EventFrequency].[ResultID] = [Result].[ResultID]
""" %(DATABASE_NAME, DATABASE_NAME, DATABASE_NAME)

df1 = pd.read_sql(Sql_Query,conn)
print(df1)

Anyone can guide me what am I doing wrong.任何人都可以指导我我做错了什么。 Thanks谢谢

read_sql() assumes that your query returns rows - but your SQL query modifies rows (without returning any). read_sql()假设您的查询返回行 - 但您的 SQL 查询修改行(不返回任何行)。

If you want to fetch the content of [SafetiRisk].[UpdatedEventFreq] , you should perform the read_sql('SELECT ... ', ...) on that table after executing your first query.如果要获取[SafetiRisk].[UpdatedEventFreq] ,则应执行第一个查询对该表执行read_sql('SELECT ... ', ...)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM