无法使用 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给我带来了新的攻略。我会坚持几天!
我很难使用 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给我带来了新的攻略。我会坚持几天!