首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python大熊猫数据框架导出或写入数据到MS访问表

从python大熊猫数据框架导出或写入数据到MS访问表
EN

Stack Overflow用户
提问于 2017-10-16 10:00:47
回答 3查看 10K关注 0票数 2

我正在尝试将数据从python熊猫数据框架导出到现有的MS访问表中,我想用我尝试使用的pandas.to_sql更新的数据(在python中)替换MS访问表,但是我得到了一个错误消息。我觉得这很奇怪,使用pandas.read_sql可以无缝地工作吗?

这是我的代码:

代码语言:javascript
复制
import pyodbc
import pandas as pd
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=H:\Work\IndexTrader\Data\database\IndexData.accdb;'
)
cnxn = pyodbc.connect(conn_str)
SQL = 'SELECT * FROM Index_data;

从MS读取数据很好,见下文

代码语言:javascript
复制
dfins = pd.read_sql(SQL, cnxn)

然而,当我试图回写并替换MS过剩的表时,它不起作用吗?

代码语言:javascript
复制
dfins.to_sql('Index_data', cnxn, if_exists='replace')
cnxn.close()

我得到的错误是:

代码语言:javascript
复制
DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC Microsoft Access Driver] The Microsoft Access database engine cannot find the input table or query 'sqlite_master'. Make sure it exists and that its name is spelled correctly. (-1305) (SQLExecDirectW)")

如果有替代pandas.to_sql的方法,这也会有帮助,我只需要知道如何导出我的数据。

EN

Stack Overflow用户

发布于 2021-03-06 04:08:34

只是为了跟进帕法特的回答。我喜欢在ms access中使用内联查询的想法,而不是在dataframe中迭代行。但是,我遇到了一个问题,就是那些看上去是数字的字段(在Excel或Access中);那些字段的前导为零。在我的环境里有很多这样的东西。对于这些,我只是使用csv模块用引号对它们进行包装。就像这样:

代码语言:javascript
复制
from pathlib import Path
import csv
csv_file = Path(Path.cwd(), ms_access_table_name + '.csv')
my_df.to_csv(csv_file, sep = ',', quoting=csv.QUOTE_NONNUMERIC , index=False)
ms_sql = f'INSERT INTO {ms_access_table_name} ({ms_access_columns}) \n' +\
            f'SELECT {ms_access_columns} \n' + \
            f'FROM [text;HDR=Yes;FMT=Delimited(,);IMEX=2;Database={Path.cwd()}].{ms_access_table_name + ".csv"}'
cursor.execute(ms_sql)
cursor.commit()

cursor.close()
conn.close()
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46767614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档