python - 将 .sql 数据库转储转储为 pandas 数据框
问题描述
我有一个.sql
包含数据库转储的文件。我更愿意将此文件放入 pandas 数据框中,以便我可以查看数据并对其进行操作。愿意采取任何解决方案,但需要明确的指示,我以前从未使用过 .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
解决方案
您应该为此使用 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 语句,并在需要时使用它手动填充数据框。只需将“值 (....),(....),(....)”更改为 mydict = {[....],[....],[....]并将其加载到数据框。或者您可以将 values 语句转储到 excel 并删除括号并对列执行文本,为其提供标题并保存,然后将其从 excel 加载到数据框。或者只是在 excel 中操作它(您甚至可以使用 concat 公式重新创建 sql 值语法并替换 sql 文件中的数据)。这真的取决于你的最终目标是什么。
很抱歉您在这里没有得到及时的答复。
推荐阅读
- flutter - 如何获取动态数据表颤动的选定行索引
- java - 在 POST 请求中接受换行符
- angular - 垫日期范围日期选择器显示错误的值 - Angular
- node.js - 变量 counter1 具有空值
- github - GitHub 个人访问令牌范围仅用于从私有仓库获取发布数据
- git - 在 Windows 10 上安装 Git 时出现安装错误
- javascript - 如何检查用户是否在 pwa 或浏览器中
- javascript - React 组件卸载的窗口对象事件
- html - 我的 html img src 属性代码有什么问题?
- python - 我可以在不迭代的情况下使用 pandas agg 来做到这一点吗?