熊猫数据框到SQL Server

我有一个API服务,在此服务中,我正在将pandas数据框结果写入SQL Server。

但是当我想向表中添加新值时,我无法添加。我使用了append选项,因为在文档中说它向数据框添加了新值。我没有使用replace选项,因为我不想每次都删除表。

我需要在保留旧值的同时向数据库表发送新值。

除了熊猫to_sql方法外,我还研究了其他方法或方式,但是到处都只能看到熊猫。

有人对此有想法吗?

谢谢。

iCMS 回答:熊猫数据框到SQL Server

  1. 您应确保您的pandas数据框具有正确的结构,其中键是您的mysql列名,数据在列表中:

     df = pd.DataFrame({"UserId":["rrrrr"],"UserFavourite":["Greek Salad"],"MonthlyOrderFrequency":[5],"HighestOrderAmount":[30],"LastOrderAmount":[21],"LastOrderRating":[3],"AverageOrderRating":[3],"OrderMode":["Web"],"InMedicalCare":["No"]})
    
  2. 与您的数据库建立正确的连接。就我而言,我正在127.0.0.1连接到本地数据库并“使用演示;”:

     sqlEngine = create_engine('mysql+pymysql://root:@127.0.0.1/demo',pool_recycle=3600)
    
     dbConnection = sqlEngine.connect()
    
  3. 最后,输入表名,我的表名为“ UserVitals”,然后尝试在try-except块中执行以处理错误:

     try:
    
         df.to_sql("UserVitals",con=sqlEngine,if_exists='append');
    
     except ValueError as vx:
    
         print(vx)
    
     except Exception as ex:   
    
         print(ex)
    
     else:
    
         print("Table %s created successfully."%tableName);   
    
     finally:
    
         dbConnection.close()
    
,

这是一个示例,其中包括一些额外的代码。

# Insert from dataframe to table in SQL Server
import time
import pandas as pd
import pyodbc

# create timer
start_time = time.time()
from sqlalchemy import create_engine


df = pd.read_csv("C:\\your_path\\CSV1.csv")

conn_str = (
    r'DRIVER={SQL Server Native Client 11.0};'
    r'SERVER=your_server_name;'
    r'DATABASE=NORTHWND;'
    r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)

cursor = cnxn.cursor()

for index,row in df.iterrows():
    cursor.execute('INSERT INTO dbo.Table_1([Name],[Address],[Age],[Work]) values (?,?,?)',row['Name'],row['Address'],row['Age'],row['Work'])
    cnxn.commit()
cursor.close()
cnxn.close()

# see total time to do insert
print("%s seconds ---" % (time.time() - start_time))
本文链接:https://www.f2er.com/1969622.html

大家都在问