【问题标题】:Turn .sql database dump into pandas dataframe将 .sql 数据库转储转储为 pandas 数据框
【发布时间】:2018-12-24 09:49:06
【问题描述】:

我有一个包含数据库转储的.sql 文件。我更愿意将此文件放入熊猫数据框中,以便我可以查看数据并对其进行操作。愿意采取任何解决方案,但需要明确的指示,我以前从未使用过 .sql 文件。

文件结构如下:

-- MySQL dump 10.13  Distrib 8.0.11, for Win64 (x86_64)
--
-- Host: localhost    Database: somedatabase
-- ------------------------------------------------------
-- Server version   8.0.11

DROP TABLE IF EXISTS `selected`;
CREATE TABLE `selected` (
  `date` date DEFAULT NULL,
  `weekday` int(1) DEFAULT NULL,
  `monthday` int(4) DEFAULT NULL,
... [more variables]) ENGINE=somengine DEFAULT CHARSET=something COLLATE=something;

LOCK TABLES `selected` WRITE;
INSERT INTO `selected` VALUES (dateval, weekdayval, monthdayval), (dateval, weekdayval, monthdayval), ... (dateval, weekdayval, monthdayval);
INSERT INTO `selected` VALUES (...), (...), ..., (...);
... (more insert statements) ...
-- Dump completed on timestamp

【问题讨论】:

  • 我需要将此文件放入 pandas 数据框中,以便查看数据并对其进行操作 ...您可以在数据库中查看和操作。考虑将文件导入 MySQL 或 MariaDB(免费且兼容),如果需要,使用 read_sql 在 pandas 中导入表/查询。
  • 是的,我已经考虑过了,但还没有找到从本地连接到该数据库文件的方法。很乐意这样做,然后使用 pd.read_sql(),但需要知道如何。
  • 1) 安装可以在笔记本电脑上运行的数据库; 2)在数据库中运行你的转储; 3) 运行 SQL 来查看 /manipulation 或读入 pandas。有无数的博客/教程/书籍,甚至在所有三个步骤上都有 SO 帖子。 Google/Bing 是您的朋友。

标签: python sql pandas dataframe


【解决方案1】:

您应该为此使用 sqlalchemy 库: https://docs.sqlalchemy.org/en/13/dialects/mysql.html

或者你也可以使用这个: https://pynative.com/python-mysql-database-connection/

第二个选项更容易将数据加载到 mysql,因为您可以将 sql 文件文本作为查询对象并将其传递给连接。

类似这样的:

import mysql.connector
connection = mysql.connector.connect(host='localhost',
                                             database='database',
                                             user='user',
                                             password='pw')
query = yourSQLfile    
cursor = connection.cursor()
result = cursor.execute(query)

加载表后,您可以使用 sqlalchemy 创建引擎以将 pandas 连接到数据库,然后只需使用 pandas read_sql() 命令将表加载到数据框对象。

另一个注意事项是,如果您只想操作数据,您可以从 sql 文件中获取 values 语句,并在需要时使用它手动填充数据框。只需将 "Values (....),(....),(....)" 更改为 mydict = {[....],[....],[....]并将其加载到数据框。或者,您可以将 values 语句转储到 excel 并删除括号并对列执行文本,为其提供标题并保存,然后将其从 excel 加载到数据框。或者只是在 excel 中操作它(您甚至可以使用 concat 公式重新创建 sql 值语法并替换 sql 文件中的数据)。这真的取决于你的最终目标是什么。

很抱歉您没有在这里得到及时的答复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多