You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas将DataFrame写入Azure SQL数据库?

如何用Pandas将DataFrame写入Azure SQL数据库?

问题场景

读取Azure SQL数据的操作正常,但执行df.to_sql()写入时触发错误:

读取数据的可运行代码:

import pyodbc
import pandas as pd
server = 'myserver.database.windows.net'
database = 'mydatabase'
username = 'DefinitelyNotAdmin'
password = 'DefinitelyNotPassword'   
driver= 'ODBC Driver 17 for SQL Server'

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
sqlcmd = "SELECT TOP (1000) * FROM information_schema.tables"
df = pd.read_sql(sqlcmd, cnxn)

执行写入操作的代码:

df.to_sql('test', cnxn, schema='lz')

触发的错误信息:

DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' 
AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]
Invalid object name 'sqlite_master'. 
(208) (SQLExecDirectW); [42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) 
could not be prepared. (8180)")

错误原因

Pandas的to_sql()方法直接使用pyodbc连接时,默认采用SQLite的语法逻辑检测目标表是否存在,但Azure SQL属于SQL Server体系,不存在sqlite_master系统表,因此触发语法错误。

解决方法

使用SQLAlchemy创建数据库连接引擎,Pandas会根据引擎类型自动适配对应数据库的语法:

  1. 先安装依赖包(未安装时执行):
pip install sqlalchemy pyodbc
  1. 修改代码,用SQLAlchemy构建连接并执行写入:
import pandas as pd
from sqlalchemy import create_engine

server = 'myserver.database.windows.net'
database = 'mydatabase'
username = 'DefinitelyNotAdmin'
password = 'DefinitelyNotPassword'
driver = 'ODBC Driver 17 for SQL Server'

# 构建SQLAlchemy连接字符串
connection_string = f'mssql+pyodbc://{username}:{password}@{server}/{database}?driver={driver.replace(" ", "+")}'
engine = create_engine(connection_string)

# 执行写入操作,可通过if_exists参数控制表已存在时的行为
df.to_sql('test', engine, schema='lz', if_exists='replace', index=False)

关键参数说明

  • if_exists:可选值为replace(替换现有表)、append(追加数据)、fail(表存在则报错),按需选择。
  • index=False:避免将DataFrame的索引列写入数据库,若需保留索引可移除该参数。

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:32:17