问题标签 [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.
pandas - 带有 Flask-SQLAlchemy 的 Pandas Dataframe to_sql
我正在处理已合并到一个数据帧中的两个 csv 文件,我目前使用 pandas to_sql() 将其存储为 sql 数据库。我正在用 Flask 编写我的所有应用程序,并且我想使用 SQLAlchemy。到目前为止,我已经创建了这样的 sql 数据库:
现在的问题是我想继续使用 SQLAlchemy 的“语法”来进行查询并使用分页等功能。如果我想执行查询,这应该是这样的:
但是我没有在我的models.py 中创建我的用户表,因为当使用pandas to_sql 执行此操作时,它会自动为我将表创建到数据库中。但是现在由于我没有在我的 models.py 文件中定义我的表,我不知道如何定义我的全局变量“用户”,所以我可以继续使用查询和其他 SQLAlchemy 方法。
谢谢,
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。
谢谢你。
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
以按顺序正确上传数据?
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
']
python - 将包含列名称作为“名称”的 pandas DataFrame 转储到 mysql 表
我正在尝试使用 pandas 和 to_sql 将爬取的数据转储到 mysql。
我以两种方式接近 1>
在这里我得到 TypeError: to_sql() got multiple values for keyword argument 'name' 错误
2>
这样我就可以转储数据,但名称字段在所有记录中都为 Null。
有没有办法使用列名“name”转储数据
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: 非法变量名/编号
如何解决问题?非常感谢您的宝贵时间!
python - Pandas sqlite3:DataFrame.to_sql。“错误绑定参数 0 - 可能不受支持的类型”
我正在学习一起使用 pandas 和 sqlite。这个想法是读取一个 pandas DataFrame,修改它,然后创建一个 sqlite 数据库。
这是我的代码:
我得到了错误:
错误的根源可能是什么?
python - 为什么相同的代码和相同的计算机向 PostgreSQL 插入数据的速度会有如此大的差异?
我使用 pandas.to_sql() 将数据帧插入 PostgreSQL。当我在 localhost 中运行代码并且也在 localhost 中运行数据库时,大约需要 5 分钟才能完成。但是当代码和数据库不在同一台计算机上时,大约需要 40 分钟才能完成。
两台计算机具有相同的配置和硬件、软件,并且它们在同一个局域网中,通过一个siwtch连接。请帮我!
代码如下:
sourceData 是一个 pandas.DataFrame,它有 3000000 行,如下所示:
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。
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,它总是会截断与表情符号一样多的字母。