python-3.x - Python pandas 到 azure SQL,批量插入
问题描述
如何将 python 数据帧的批量插入到相应的 azure SQL 中。我看到 INSERT 适用于单个记录:
插入XX([字段1])值(值1);
如何将数据框的全部内容插入 Azure 表?
谢谢
解决方案
根据我的测试,我们也可以使用to_sql
Azure sql 插入数据
例如
from urllib.parse import quote_plus
import numpy as np
import pandas as pd
from sqlalchemy import create_engine, event
import pyodbc
# azure sql connect tion string
conn ='Driver={ODBC Driver 17 for SQL Server};Server=tcp:<server name>.database.windows.net,1433;Database=<db name>;Uid=<user name>;Pwd=<password>;Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
quoted = quote_plus(conn)
engine=create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))
@event.listens_for(engine, 'before_cursor_execute')
def receive_before_cursor_execute(conn, cursor, statement, params, context, executemany):
print("FUNC call")
if executemany:
cursor.fast_executemany = True
#insert
table_name = 'Sales'
# For test, I use a csv file to create dataframe
df = pd.read_csv('D:\data.csv')
df.to_sql(table_name, engine, index=False, if_exists='replace', schema='dbo')
#test after inserting
query = 'SELECT * FROM {table}'.format(table=table_name )
dfsql = pd.read_sql(query, engine)
print(dfsql)
推荐阅读
- c++ - 具有等待时间限制的线程之间的通信
- terraform - 如何从 Terraform 中的特定工作区销毁资源?
- r - 如何使用 laply match 查找值并附加到每一行?
- python - 如何将输入作为参数传递给 python 中的另一个函数?它没有
- ios - 由于内部保留周期,ViewController 没有被释放
- logstash - 如何在logstash输入文件中使用正则表达式
- android - 无法使用polidea RxAndroidBLE断开android中的蓝牙
- jquery - JQuery 在媒体查询更新元素之前运行
- c# - C# Toast Win32 [以管理员身份运行] 不起作用
- jquery - jQuery:在页面加载时未选择正确的下拉值