问题标签 [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.

0 投票
0 回答
1972 浏览

pandas - 带有 Flask-SQLAlchemy 的 Pandas Dataframe to_sql

我正在处理已合并到一个数据帧中的两个 csv 文件,我目前使用 pandas to_sql() 将其存储为 sql 数据库。我正在用 Flask 编写我的所有应用程序,并且我想使用 SQLAlchemy。到目前为止,我已经创建了这样的 sql 数据库:

现在的问题是我想继续使用 SQLAlchemy 的“语法”来进行查询并使用分页等功能。如果我想执行查询,这应该是这样的:

但是我没有在我的models.py 中创建我的用户表,因为当使用pandas to_sql 执行此操作时,它会自动为我将表创建到数据库中。但是现在由于我没有在我的 models.py 文件中定义我的表,我不知道如何定义我的全局变量“用户”,所以我可以继续使用查询和其他 SQLAlchemy 方法。

谢谢,

0 投票
1 回答
7762 浏览

pandas - Pandas to_sql 使索引唯一

我一直在阅读关于不向数据库添加重复记录的 pandas to_sql 解决方案。我正在处理日志的 csv 文件,每次我上传一个新的日志文件时,我都会读取数据并使用 pandas 创建一个新的数据框进行一些更改。然后我执行to_sql('Logs',con = db.engine, if_exists = 'append', index=True)if_exists arg i 确保每次从新文件中创建的新数据框都附加到现有数据库中。问题是它不断添加重复值。我想确保如果一个已经上传的文件被错误地再次上传,它不会被附加到数据库中。我想在创建数据库时直接尝试这样做,而没有找到解决方法,比如检查文件名是否以前被使用过。

我正在使用烧瓶-sqlalchemy。

谢谢你。

0 投票
1 回答
714 浏览

python - 使用 to_sql 对 Pandas 中的数据进行排序和加载到 Redshift

我已经构建了一些工具来为引用动态 Redshift 表的用户创建前端列表框。表中的新项目,它们会自动出现在列表中。

我想将列表按字母顺序放在数据库中,以便动态列表框按该顺序显示数据。

从 API 下载列表后,我尝试在上传之前在 Pandas 数据框中按字母顺序对列表进行排序。这完美地工作:

df.sort_values(['name'], inplace=True, ascending=True, kind='heapsort')

但是当我尝试按该顺序上传到 Redshift 时,它会在上传时丢失该顺序。数据出现在按字母顺序排列的段中。

db_conn = create_engine('<redshift connection>')

obj.to_sql('table_name', db_conn, index = False, if_exists = 'replace')

由于第三方工具 (Alteryx) 的工作方式,我需要在数据库中按字母顺序保存这些数据。

如何修改to_sql以按顺序正确上传数据?

0 投票
0 回答
253 浏览

python - 使用 to_sql 方法的熊猫“文件中的信息不正确”

我有一个熊猫数据框,并正在通过以下代码写入 SQL 数据库:

它引发以下错误。我想知道这个错误意味着什么,为什么会显示它,以及如何解决它?:

回溯(最后一次调用):文件“/home/ubuntu/workspace/2_distance.py”,第 129 行,在 df.to_sql(con=conn, name='temp', if_exists='replace',index=False)

文件“/usr/local/lib/python2.7/dist-packages/pandas/core/generic.py”,第 1362 行,在 to_sql chunksize=chunksize, dtype=dtype)

文件“/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py”,第 471 行,在 to_sql chunksize=chunksize, dtype=dtype) 文件“/usr/local/lib/python2. 7/dist-packages/pandas/io/sql.py",第 1150 行,在 to_sql table.create()

文件“/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py”,第 586 行,创建 if self.exists():

文件“/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py”,第 574 行,存在 return self.pd_sql.has_table(self.name, self.schema)

文件“/usr/local/lib/python2.7/dist-packages/pandas/io/sql.py”,第 1178 行,在 has_table 模式或 self.meta.schema 中,

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 1534 行,在 run_callable return callable_(self, *args, **kwargs)

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/base.py”,第 1700 行,在 has_table skip_user_error_events=True).execute(st)

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 939 行,执行 return self._execute_text(object, multiparams, params)

_execute_text 语句中的文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 1097 行,参数

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 1189 行,在 _execute_context 上下文中)

_handle_dbapi_exception exc_info 中的文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 1402 行

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py”,第 203 行,在 raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause)

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py”,第 1182 行,在 _execute_context 上下文中)

文件“/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py”,第 470 行,在 do_execute cursor.execute(语句,参数)

文件“/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py”,第 205 行,在执行 self.errorhandler(self, exc, value)

文件“/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py”,第 36 行,在 defaulterrorhandler raise errorclass, errorvalue sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1033, "Incorrect information在文件中:'./pickaresk/temp.frm'") [SQL: 'DESCRIBE temp']

0 投票
2 回答
928 浏览

python - 将包含列名称作为“名称”的 pandas DataFrame 转储到 mysql 表

我正在尝试使用 pandas 和 to_sql 将爬取的数据转储到 mysql。

我以两种方式接近 1>

在这里我得到 TypeError: to_sql() got multiple values for keyword argument 'name' 错误

2>

这样我就可以转储数据,但名称字段在所有记录中都为 Null。

有没有办法使用列名“name”转储数据

0 投票
3 回答
36527 浏览

oracle - 如何使用 to_sql 将 pandas 数据框写入 oracle 数据库?

我是一个新的甲骨文学习者。我正在尝试将 pandas 数据框写入 oracle 表中。上网查了一下,发现代码本身很简单,但是不知道为什么我的代码不行。

我已经从本地文件中读取了 pandas 数据框:

现在打印 df,数据帧 df 应该是这样的:

然后我使用 cx_Oracle 创建与数据库的连接,它可以工作。接下来我尝试将数据帧 df 写入表 TEST。该表TEST是oracle数据库中已经存在的空表,oracle中的列包括DATE、YEAR、MONTH、SOURCE、DESTINATION。所有数据类型都与 df 样本数据匹配。我的代码如下:

它显示错误:

DatabaseError: 执行失败 sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': ORA-01036: 非法变量名/编号

如何解决问题?非常感谢您的宝贵时间!

0 投票
1 回答
1208 浏览

python - Pandas sqlite3:DataFrame.to_sql。“错误绑定参数 0 - 可能不受支持的类型”

我正在学习一起使用 pandas 和 sqlite。这个想法是读取一个 pandas DataFrame,修改它,然后创建一个 sqlite 数据库。

这是我的代码:

我得到了错误:

错误的根源可能是什么?

0 投票
0 回答
85 浏览

python - 为什么相同的代码和相同的计算机向 PostgreSQL 插入数据的速度会有如此大的差异?

我使用 pandas.to_sql() 将数据帧插入 PostgreSQL。当我在 localhost 中运行代码并且也在 localhost 中运行数据库时,大约需要 5 分钟才能完成。但是当代码和数据库不在同一台计算机上时,大约需要 40 分钟才能完成。

两台计算机具有相同的配置和硬件、软件,并且它们在同一个局域网中,通过一个siwtch连接。请帮我!

代码如下:

sourceData 是一个 pandas.DataFrame,它有 3000000 行,如下所示:

0 投票
9 回答
91260 浏览

python - 使用 pyODBC 的 fast_executemany 加速 pandas.DataFrame.to_sql

我想向pandas.DataFrame运行 MS SQL 的远程服务器发送大数据。我现在这样做的方法是将对象转换为元组列表,然后使用 pyODBC 的函数data_frame将其发送出去。executemany()它是这样的:

data_frame.to_sql()然后我开始怀疑是否可以通过使用方法来加快速度(或者至少更具可读性) 。我想出了以下解决方案:

现在代码更具可读性,但上传速度至少慢了 150 倍......

有没有办法fast_executemany在使用 SQLAlchemy 时翻转?

我正在使用 pandas-0.20.3、pyODBC-4.0.21 和 sqlalchemy-1.1.13。

0 投票
0 回答
196 浏览

python - 将表情符号作为 NVARCHAR 上传到 MSSQL 会占用数据字段末尾的字符

设想:

我正在使用Pandas.to_sql()with 参数dtype={'COLUMN': NVARCHAR}通过 FreeTDS 将包含带有表情符号的文本的 COLUMN 上传到 MSSQL DB。NVARCHAR 已导入from sqlalchemy.types import NVARCHAR。COLUMN 作为 Excel 文件中的 DataFrame 提供。

问题:

奇怪的是,对于我放置的每个表情符号,NVARCHAR 列末尾的一个字符都会消失。

我知道 NVARCHAR 的最大长度为 4000,但它怎么能用这么短的文本来达到它:

" DUMMY TEXT 以下四个字母将被剪切:abcd"

上传后:

" DUMMY TEXT 以下四个字母将被剪掉:"

我注意到上传后表情符号之间也有一些额外的间距。

这个问题是由表情符号引起的还是我们应该使用另一个dtype

谢谢,

道友野

PS: DUMMY TEXT 的长度似乎不影响句尾截断多少个字符。我尝试过使用不同长度的 DUMMY TEXT,它总是会截断与表情符号一样多的字母。