繁体   English   中英

将数据框作为新表导出到MSSQL Server中

[英]Export a Dataframe into MSSQL Server as a new Table

我已经编写了一个代码,以使用Python连接到SQL Server并在df中从数据库保存表。

from pptx import Presentation
import pyodbc
import pandas as pd
cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};"
                      "Server=Servername;"
                      "Database=Test_Database;"
                      "Trusted_Connection=yes;")
df = pd.read_sql_query('select * from Table1', cnxn)

现在,我想在Python中修改df并将其另存为df2。 之后,我想将df2作为新表(Table2)导出到数据库中。

我找不到有关将数据框导出到SQL Server的任何信息。 你们知道怎么做吗?

您可以为此使用df.to_sql() 首先创建SQLAlchemy连接,例如

from sqlalchemy import create_engine
engine = create_engine("mssql+pyodbc://scott:tiger@myhost:port/databasename?driver=SQL+Server+Native+Client+10.0")

有关更多详细信息,请参见此答案 ,以了解MSSQL的连接字符串。

然后做:

df.to_sql('table_name', con=engine)

如果表已经存在,则默认情况下会引发异常,请根据需要调整if_exists参数。

这就是我的方法。

# 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=ServerName;'
    r'DATABASE=DatabaseName;'
    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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM