问题标签 [pandas-to-sql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - Pandas to_sql '追加'到现有表会导致 Python 崩溃
我的问题本质上是这样的:当我尝试将 to_sql 与 if_exists = 'append' 一起使用并且名称设置为我的 SQL Server 上已经存在的表时,python 崩溃了。
这是我的代码:
我没有包括它,但 dataTypes 是所有列名及其数据类型的字典。
这是我得到的错误:
根据这些错误,对我来说,fast_executemany 标志似乎有问题,但我已经阅读了很多关于它的文档,并没有发现它有任何问题。
可能需要注意的事项:
- if_exists = 'replace' 不存在的表按预期工作
- if_exists = 'append' 不存在的表按预期工作
- if_exists = 'replace' 已经存在的表按预期工作
- 我的 DataFrame 大约有 300 万行和 25 列(主要是浮点数和一些短字符串)
- 我可以成功写入 900,000 行绝对最大值而不会导致 python 崩溃。
- 我正在使用 SQL Server、pandas 0.23.3、pyodbc 4.0.23(我也遇到与 4.0.22 相同的错误)、Jupyter Notebook(我也在 IDLE 中尝试过,结果相同)、Windows 10、 Python 3.5.1 和 Anaconda 3。
对我来说显而易见的解决方案是将 DataFrame 分成 900,000 行的块。当第一个块成功上传时,我什至不能在没有 python 崩溃的情况下附加一行。
此错误是否是旨在加快进程的代码的结果(它做得非常好)?我误解了 to_sql 函数吗?还是有其他事情发生?任何建议都会很棒!另外,如果有人有类似的问题,很高兴知道!
pandas - 如何从 pandas.to_sql 插入中获取主键
我想使用 pandas .to_sql 命令将一些数据添加到数据库中。有没有一种方法可以获得插入对象的自动生成的主键,因为我需要它来创建外键?
到目前为止,我这样做了:
楷模:
向 db 添加点:
points.to_sql(Vertices._meta.db_table.lower(), con=engine, if_exists='append', index=False)
现在我想在 Face 表中为这些点创建一个外键:
非常感谢!
python - Pandas to_sql() 更新数据库中的唯一值?
如何使用df.to_sql(if_exists = 'append')
仅附加数据框和数据库之间的唯一值。换句话说,我想评估 DF 和 DB 之间的重复项,并在写入数据库之前删除这些重复项。
有这个参数吗?
我了解参数if_exists = 'append'
和if_exists = 'replace'
是针对整个表格的 - 而不是唯一的条目。
我坚持这一点,所以非常感谢您的帮助。-谢谢
python - 找不到将熊猫数据框插入 MySql 的方法
所以基本上我有一个从 API 检索数据并生成包含列(数据、实时开始、值)的数据系列的函数,然后我有一个程序可以插入使用我的字典中的值命名的表。但是,我无法弄清楚如何将数据系列上传到这些表中。我尝试了很多方法,它要么从随机数据系列元素中输入值,要么给我一个错误:AttributeError: 'Timestamp' object has no attribute 'translate'
这是代码:
python - pyodbc 到 sqlalchemy 的连接
我正在尝试将 pyodbc 连接切换到 sqlalchemy。工作的 pyodbc 连接是:
我试过了:
基于:http ://docs.sqlalchemy.org/en/latest/core/engines.html
并且:使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多
(尝试使用 Trusted_Connection = Yes 建立连接)
但我收到消息:
OperationalError: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]No existe el servidor SQL Server o se ha denegado el acceso al mismo. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)')(此错误的背景: http ://sqlalche.me/e/e3q8 )(抱歉西班牙语,但它说 SQL Server 不存在)
我几乎可以肯定这与我不了解引擎连接的sintax有关。有人可以详细解释一下如何将连接从 pyodbc 转换为 sqlalchemy 吗?
提前致谢!
PD:我正在尝试实现 sqlalchemy,以便稍后在我的代码中使用pandas.DataFrame.to_sql(engine)
python - 加速 Pandas to_sql 方法
我正在尝试使用 Pandas 的 to_sql 方法通过循环将多个 csv 文件上传到 SQL Server 数据库中的相应表。
我的连接字符串和数据库连接工作正常;我通过前几个(和小)文件就好了。但是,当我点击包含约 135k 行的 file4 时,将所有数据上传到数据库需要将近一个小时。在阅读了有关 to_sql 的“chunksize”参数的文档后,我尝试降级到 Pandas 0.22 版,但没有加快进程。
任何有关如何提高速度的提示将不胜感激。谢谢你。
python - 如何解决 Pandas Series to sql 存储错误?
我正在尝试将 csv 文件导入熊猫数据框并将此数据框写入 PostgreSQL 数据库。但是,在将 Dataframe 写入 SQL 数据库后,最终 SQL 数据库中会出现不在 Dataframe 中的行。
原始数据文件包含一些存储为 None 的测量误差,我通过以下方式在 Dataframe 中将其替换为 NaN 值:
然后,我通过以下方式将 Dataframe 写入 SQL 数据库:
我使用 10000 的块大小,因为我尝试写入的总 Dataframe 包含 13.000.000 行。奇怪的部分来了,例如,我要写入 SQL 数据库的 Dataframe 中的第 60-68 行如下所示:
但在最终的 SQL 数据库中,相同的行 60-68 包含不同日期的新行(因此是 csv 文件),其中 None 值替换为 NaN:
这个奇怪的功能每 66 行出现一次,仅适用于 2017-03-25 的 csv 文件中包含 None 值并已被替换的 8 行。其余文件被正确处理,无值被替换而没有任何问题,其余数据帧存储到 SQL 数据库中。
任何人都知道这是如何发生的以及我能做些什么来解决它?我可以在最终的 SQL 数据库中删除这 8 行,但我想使用 python 脚本来获取更多数据文件。可能是由于替换函数中的 inplace = True 参数吗?还是由于大量行未正确写入数据库?
python - 无法使用 pandas 和 sqlalchemy 更改 VARCHAR 长度
我正在使用 pandas 将数据集动态插入 Redshift 数据库。
但是当我尝试更改 VARCHAR 字段的长度时,它似乎不起作用。
在 psql 中,当我要求时\d test
,它返回:
该列0
仍然只接受 256 个字符。
python - 如何为 pandas.DataFrame 编写 connection_object 以在 sql 中创建表
我正在尝试将 csv 文件(由 40 个标题和 4000 行组成)转换为 sql 数据库服务器中的表。我在某处读到,我可以用 2 行简单地做到这一点:
我试图使 conn 如下:
但它失败了,我得到了这些错误:
DatabaseError: 执行失败 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ('42S02', "[42S02] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无效对象名称“sqlite_master”。(208)(SQLExecDirectW);[42S02][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]无法准备语句。(8180)“)
显然,我没有正确定义 conn 。但我不知道如何纠正它。
sql-server - pandas.DataFrame.to_sql 插入数据,但不提交事务
我有一个 pandas 数据框,我正在尝试按照以下方式插入 MS SQL EXPRESS:
当我打电话时:
接着:
我可以看到数据正常,但它实际上并没有提交任何事务:
它在这里说我不必像 SQLAlchemy 那样提交:
Pandas DataFrame.to_sql() 函数是否需要后续的 commit()?
并且以下建议不起作用:
我花了 3 个小时在整个互联网上寻找线索,但我没有得到任何相关的答案,或者我不知道如何提出问题。
任何关于寻找什么的指导将不胜感激。
更新
我可以使用 pyodbc 连接和完整的插入语句提交更改,但是带有 SQLAlchemy 引擎的 pandas.DataFrame.to_sql() 不起作用。无论是否指定了模式,它将数据发送到内存而不是实际的数据库。
我真的很感激这方面的帮助,或者可能是我需要报告的熊猫问题?