python - 在 pandas 中运行 SQL 查询
问题描述
我是 SQL 查询的新手。我正在用 python 编写代码和查询数据库。下面是我的代码,我不确定代码的问题:
import pyodbc
import pandas as pd
import numpy as np
#import datetime
from pandas import ExcelWriter
from pandas import ExcelFile
df_lots=pd.DataFrame()
sql = """
DECLARE @carts NVARCHAR(25) = 'Large';
DECLARE @item_type NVARCHAR(50)= 'Produce';
DECLARE @read_point INT= 0;
DECLARE @item_type NVARCHAR(MAX)= N'';
SELECT @item_type+=N',' + [items]
FROM
(
SELECT distinct D.items
FROM [dbo].[ITEM_SET_COMPACT_VIEW] D
JOIN [dbo].[Placement] E
ON D.items=E.items
WHERE D.[items] LIKE 'Large'
) x
ORDER BY items;
SET @item_type = STUFF(@item_type, 1, 1, '');
SELECT *
FROM [dbo].[Get_Data](@item_type, @item_type, @read_point, 1, 0);
"""
try:
mssql_connection = pyodbc.connect('''
DRIVER=ODBC Driver 17 for SQL Server;
SERVER=XXXXXXX;
DATABASE=XXXXXX;
UID=XXXXXXXX;
PWD=XXXXXXXX;
''')
with mssql_connection.cursor() as cursor:
cursor.execute(sql )
lots=cursor.fetchall()
except pyodbc.Error as ex:
print(f"Unexpected error {ex}")
df_lots=pd.DataFrame(np.array(lots))
当我运行上面的代码时,它给了我以下错误:
意外错误 无结果。以前的 SQL 不是查询。
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-e3e7b4c5dae4> in <module>
45 except pyodbc.Error as ex:
46 print(f"Unexpected error {ex}")
---> 47 df_lots=pd.DataFrame(np.array(lots))
NameError: name 'lots' is not defined
谁能帮我克服这个问题??
解决方案
该变量lots
是在try ... except
块内创建的。当此块中发生异常时,lots
未定义变量,然后行
df_lots=pd.DataFrame(np.array(lots))
导致错误。
推荐阅读
- python-3.x - 在 Spyder 中使用 Python 运行/调用 bat 文件
- android - 使用 loadDataWithBaseURL 以 base64 编码加载数据
- c# - For 循环 C# 中的 DataView.RowFilter
- performance - 如何提高 Pyspark 方法的性能以获取缺失数据的行的比率
- sql - Redshift - 使用活动标志查找最新行
- vue.js - 在 Vue 中,如果想要进行状态更新而没有突变,那么我该怎么做呢?
- google-apps-script - 使用 QR 码在 Google 表单中输入值?
- rstudio - 从一列中选择相等的值,在第二列中选择不同的值
- angular - 仅 Ionic 4 PWA 应用程序需要 cordova-plugin-ionic-webview
- sql - 如何在 where 子句中使用 clob 比较。ORA-01460: 请求的转换未实现或不合理