问题标签 [read-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 - 具有十进制数据类型的 Pandas `read_sql_query`
我正在尝试使用read_sql_query()
从 MySQL 数据库读取查询,数据库中的字段之一,它的类型是decimal(28,5)
,我想使用dtype=
参数来完全控制数据类型,但似乎熊猫无法识别Decimal
类型:
这会给我一个错误TypeError: dtype '<class 'decimal.Decimal'>' not understood
因此,如果我不指定字段的类型value
:
这很好用,如果我打印出数据类型print(type(df['value'][0]))
,这会告诉我<class 'decimal.Decimal'>
,但是有没有办法可以value
在 Python 代码中将字段类型指定为十进制?谢谢。
python - pandas `read_sql_query` - 将 MySQL 数据库中的`double` 数据类型读取为`Decimal`
我正在尝试使用read_sql_query()
从 MySQL 数据库读取查询,数据库中的字段之一,它的类型是double(24, 8)
,我想使用dtype=
参数来完全控制数据类型并将其读取到decimal
,但似乎熊猫不能识别decimal
类型,所以我不得不阅读它Float64
在数据库中,该字段的值如下所示:
然后我试图从 Python 代码中读取它:
但是从上面的代码中读取数据后,它看起来像这样:
如何阅读此栏decimal
并保留所有数字?谢谢。
python - 在 pyodbc 驱动程序中添加类型转换的配置
我正在尝试pandas.read_sql
通过使用 pyodbc 驱动程序在 Python 中使用方法来读取存储过程。我遇到的问题是当 Pandas 读取数据时,它会将int
列转换为float
其中包含 Null 值的列。
有没有办法通过应用一些配置或挂钩一些自定义转换器来填充 pyodbc 驱动程序中的那些空值?
我不想在 SQL 级别或通过 pandas 阅读它时更改它。
python - Pandas read_sql_query 将浮点数转换为 int
我正在尝试将信息从 SQL 数据库提取到 Python。数据库的两列是数字,主要是浮点格式。我的问题出现在超过 6 位的数字上,read_sql_query 将它们读取为 int,因此小数不会出现在数据框中。例如,如果 SQL 中的数据库如下所示:
指数 | 代金券 | 已付款 |
---|---|---|
1 | 225.21 | 0 |
2 | 695.3 | 0.35 |
3 | 6987512.12 | 635.21 |
4 | 654887.36 | 69995.36 |
将数据库导入 Python 后,数据框如下所示:
指数 | 代金券 | 已付款 |
---|---|---|
1 | 225.21 | 0 |
2 | 695.3 | 0.35 |
3 | 6987512 | 635.21 |
4 | 654887 | 69995 |
超过 6 位左右的数字会丢失小数点。我的代码是:
我已经尝试过:
和
你能帮我解决这个问题吗?谢谢!
python - 使用 pandas.read_sql 重用数据库连接对象以进行高频更新 [Python/MariaDB/alive-db-connection]
我正在尝试重用 MariaDB 的数据库连接对象,并将其存储为 Singleton 类的静态变量。
然后,在下面我调用调用类的连接:
但是每次执行上面的'read_sql'时,都会创建新的类对象,并且connection_string总是None,根本不是单例。我究竟做错了什么?
如果有人要问为什么,我会尝试以高频率(每秒 3-4 次调用)从我的 MariaDB 数据库中查询数据。MariaDB 连接字符串初始化大约需要 0.4 秒。如果我将 SingletonAux 类视为 mariaDB 连接字符串,例如:
然后 Pandas 抱怨说 SingletonAux 没有游标功能,这是真的。如果我需要以某种方式取消引用 maria 对象,但我不知道如何。
如果我的基本代码中有错误,请帮助。
python - pandas.read_sql() 函数的查询字符串的大小是否有最大限制?
我有一个 Python 脚本,它从用户那里获取一个名称列表,创建一个 SQL 查询字符串,然后查询数据库并将数据放入使用pandas.read_sql()
方法的数据框中。但是,我注意到如果我要查询的人的列表非常长,我的代码永远不会到达后面的行pandas.read_sql()
,并且由于某种原因,没有捕获到异常。
我的查询字符串如下所示:
其中可能包含数百个名称。
我使用的 Python 代码如下所示:
我的代码总是执行到 try 块。该程序打印“尝试”,但从不打印“完成”,也不会返回任何错误。我检查了,pymongoConnection
对象是正确的。我还尝试query_string
在 MySQL 中手动执行它,它可以工作。
问题一定出在pandas.read_sql()
甚至这里,只有当查询字符串的大小超过某个阈值时才会出现问题,否则代码会正确完成。是否有使用限制pandas.read_sql()
,例如输入字符串的最大大小或最大WHERE
子句或返回数据帧的最大数据量?因为我想不出任何其他可能导致问题的东西。
python - 使用 Python、Pandas、pyodbc 从 Access DB 访问数据时保留具有精确小数位的精确浮点数
我已经通过 pd.read_sql_query 命令使用 python、pandas、pyobdc 访问了存储在 Access DB 中的表。该表具有用于预测值计算的浮点值,在从表中读取这些浮点值时,Python 并未完全按原样读取它们,而是在末尾添加了更多数字,这会导致错误的预测值。
例如 DB 中的值:0.292244,Python 和 pandas 检索到的值:0.29224375
他们给了我不正确的值,因为它们被用于指数函数。我已经打开和关闭了 coerce_float 参数,但它没有做任何更改。请提出一种正确的方法。
python - 通过python脚本将MYSQL表导出到csv?
虽然有很多解决方案可以使用 python 将 mysql 表导出到 csv。我想知道这样做的最佳方法?目前我将大约 50 个表存储到 csv 中,这大约需要 47 分钟,并且还需要超过 16gb 的内存。
代码是:
我已经看到了许多存储到 csv 的方法,例如:
- 使用光标
- 使用 pyodbc 库
- pandas 读取 sql 方法。
有没有其他方法或技术,哪一种最能减少内存或执行时间?
python - 当我期望一个列表时,为什么我没有('NoneType' 对象不可迭代)?
我正在使用 pandas.read_sql 检索表名列表,然后尝试使用“for”循环从检索到的列表中删除表。但是,我收到“NoneType”对象不可迭代错误(尽管列表不为空)。
你能帮我弄清楚我的错误是什么吗?先感谢您!
LE:请参阅下面我收到的完整输出: