我有一个字典,其中包含 3 个键,对应于 SQL Server 表中的字段名称。这些键的值来自一个 excel 文件,我将这个字典存储在一个数据帧中,我现在需要将其插入到 SQL 表中。这一切都可以在下面的代码中看到:
import pandas as pd
import pymssql
df=[]
fp = "file path"
data = pd.read_excel(fp,sheetname ="CRM View" )
row_date = data.loc[3, ]
row_sita = "ABZPD"
row_event = data.iloc[12, :]
df = pd.DataFrame({'date': row_date,
'sita': row_sita,
'event': row_event
}, index=None)
df = df[4:]
df = df.fillna("")
print(df)
我的问题是我现在如何将此字典插入 SQL 表中?
另外,作为旁注,此代码是一个循环的一部分,该循环需要逐个浏览多个 excel 文件,将数据插入字典,然后插入 SQL,然后删除字典中的数据并重新开始下一个 excel 文件。
你可以尝试这样的事情:
import MySQLdb
# connect
conn = MySQLdb.connect("127.0.0.1","username","passwore","table")
x = conn.cursor()
# write
x.execute('INSERT into table (row_date, sita, event) values ("%d", "%d", "%d")' % (row_date, sita, event))
# close
conn.commit()
conn.close()
您可能需要根据SQL限制对其进行一些更改,但无论如何都应该为您提供一个良好的开端。
对于熊猫数据帧,可以使用熊猫内置方法to_sql存储在数据库中。以下是使用它的方法。
import sqlalchemy as sa
params = urllib.quote_plus("DRIVER={};SERVER={};DATABASE={};Trusted_Connection=True;".format("{SQL Server}",
"<db_server_url>",
"<db_name>"))
conn_str = 'mssql+pyodbc:///?odbc_connect={}'.format(params)
engine = sa.create_engine(conn_str)
df.to_sql(<table_name>, engine,schema=<schema_name>, if_exists="append", index=False)
对于此方法,您需要安装sqlalchemy
软件包。
pip install sqlalchemy
您还需要在计算机上设置 MSSql DSN。