【问题标题】:Writing to a SQL Server database from Pandas using PYODBC使用 PYODBC 从 Pandas 写入 SQL Server 数据库
【发布时间】:2018-11-06 15:10:12
【问题描述】:

在我的数据之旅中,我已经完成了写入 SQL Server 数据库的工作,希望有人能够提供帮助。

我已经能够使用 PYODBC 成功连接到远程 Microsoft SQL Server 数据库,这允许我将 SQL 查询传递到数据框并创建报告。

我现在想要自动化“选择导入”手动方法,我已经阅读了许多博客,但我并不知道这一切背后的原理。

import pandas as pd
import pyodbc

SERVER = r'Remote SQL Server'
database = 'mydB'
username = 'datanovice'
password = 'datanovice'
cnxn = pyodbc.connect('Driver={SQL 
Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ 
password)
cursor = cnxn.cursor()

我可以使用它轻松读取查询并将它们传递到数据帧中。

写入我的 MS SQL dB 的最佳方式是什么?注意到它不是本地的,我很高兴将它传递给 SQL Alchemy,但我不确定语法是否正确。

需要考虑的事项:

  1. 这是一个任务关键型数据库,某些 DataFrame 必须编写为删除查询

  2. 如果这是一种不安全的方法,并且如果我需要回去研究更多以了解正确的数据库方法,我很乐意这样做

  3. 我不是在找人为我编写或提供代码,而是为我指明正确的方向

我设想这类似于.. 但我不确定如何指定正确的表:

df.to_sql('my_df', con, chunksize=1000)

【问题讨论】:

  • 我已经阅读了上述内容,但我不清楚如何从我的 PYODBC 为 SQL alchemy 创建一个引擎,你能提供帮助吗?然后我可以使用以下df1.to_sql('users', con=engine, if_exists='replace', ... index_label='id') ps 喜欢 OPM 图片!

标签: sql-server pandas pyodbc


【解决方案1】:

正如您从pandas documentation 中看到的,您需要将SQLAlchemy 引擎对象作为第二个参数传递给to_sql 方法。然后你可以使用类似的东西

df.to_sql("table_name", engine, if_exists="replace")

SQLAlchemy documentation 展示了如何创建引擎对象。如果您使用 ODBC DSN,则语句将如下所示:

from sqlalchemy import create_engine
# ...
engine = create_engine("mssql+pyodbc://scott:tiger@some_dsn")

【讨论】:

  • 有道理,SQLAlchemy 文档我来了!
  • 谢谢哥们,找到了连接,不得不使用 urrlib.parse 但我能够做到上面的说明。干杯戈德,我的男人,欠你一两杯咖啡。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2018-11-29
  • 2016-02-22
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
相关资源
最近更新 更多