【发布时间】:2022-01-07 01:07:59
【问题描述】:
我是一个真正的菜鸟,所以我希望有人可以轻松地帮助我。我想删除具有特定日期(min_date)或更晚的所有行。代码如下:
import pandas as pd
import pyodbc
print()
print("please wait while I import your file")
print()
data = pd.read_excel (r'C:\Users\xxx\OneDrive - xxx\Temp\2020_12_xxx.xlsx')
df = pd.DataFrame(data)
df = df.fillna(value=" ")
df['To_date']=pd.to_datetime(df['To_date'])
print(df)
min_date = df['To_date'].min()
print()
print("Data is loaded from:")
print()
print(min_date)
print()
print("data is in DataFrame, please wait")
print()
conn = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
'Server=xxx.net;'
'Database=yyy;'
'Persist Security Info=False;'
'Authentication=ActiveDirectoryIntegrated')
cur = conn.cursor()
cur.execute('DELETE FROM FMK WHERE To_Date >= min_date')
conn.commit()
现在,当我运行它时,我收到错误消息:
ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]列名'min_date'无效。(207) (SQLExecDirectW)")
如您所见,min_date 是一个来自 DF 的变量。我只是不希望必须在那里输入一个列名。我做错了什么?
【问题讨论】:
-
您的
min_date是一个文字字符串。您需要使用该变量 - 可能使用准备好的语句。