无法使用 PYODBC 和 SQLALCHEMY 提交存储过程执行

Unable to commit a Stored Procedure execution using PYODBC and SQLALCHEMY

我很难使用 SQLALCHEMY 提交到数据库。当我调用 execute_no_return 函数时,我正在调用的存储过程运行,但不提交它的更改。使用 PANDAS 插入的另一个函数工作正常。不知道该尝试什么了...

另外,我在使用 Session() 吗?昨天在这里发现的,还没有弄明白。

import configparser
import pyodbc as msodbc
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker



class connection(object) :
  def connect(self) :
    self.conn = None
    self.sess = None
    
    conf = configparser.RawConfigParser()
    conf.read_file(open(r'/path/to/directory/config'))

    engine = create_engine("""mssql+pyodbc://%s:%s@%s:1433/%s?driver=ODBC+Driver+17+for+SQL+Server""" % (conf.get('DB', 'UID'),conf.get('DB', 'PWD'),conf.get('DB', 'SERVER'),conf.get('DB', 'DATABASE')),echo=False)
    self.conn = engine

    Session = sessionmaker()
    Session.configure(bind=engine,autocommit=True)
    self.sess = Session()


  def select(self,sql) :
    self.connect()
    df = pd.read_sql(sql,self.conn)

    return df


  def insert(self,df,tbl,exists) :
    self.connect()
    df.to_sql(tbl,con=self.conn,if_exists=exists,chunksize=1000,method='multi',index=False)
    

  def run(self,sql) :
    self.connect()
    self.conn.execute(sql)


db = connection()

def select_to_dataframe(sql) :
  df = db.select(sql)
  return df


def insert_dataframe(df,tbl,exists) :
  db.insert(df,tbl,exists)


def execute_no_return(sql) :
  db.run(sql)


感谢您抽出宝贵时间提供帮助:)

原来是我们应用程序删除记录的问题这段代码完美运行。感谢@Mike76给我带来了新的攻略。我会坚持几天!