当前位置: 首页 > 知识库问答 >
问题:

使用MySQL创建数据库并用SQLAlchemy和Pandas填充它

吴驰
2023-03-14

我使用MySQl Work Bench制作了一个表模式,并希望用我丢弃的tweet填充它。到目前为止,所有外键和主键都已设置。但我无法让SQLalchemy使用模式并填充它。我使用以下命令行进行了尝试:user_df.to_sql(Name='user',con=con,if_exists='append',index=false)我缩短了表创建的代码,使其只与“user”部分匹配。我得到的错误是sqlalchemy.exc.operationalerror:(pymysql.err.operationalerror)(1054,“unknown column'id'in'field list'”)


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema CapitolRiot
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema CapitolRiot
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `CapitolRiot` DEFAULT CHARACTER SET utf8 ;
USE `CapitolRiot` ;

-- -----------------------------------------------------
-- Table `CapitolRiot`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `CapitolRiot`.`User` (
  `userName` LONGTEXT NULL,
  `displayName` LONGTEXT NULL,
  `description` LONGTEXT NULL,
  `friendsCount` INT NULL,
  `createdAt` DATE NULL,
  `followersCount` INT NULL,
  `statusesCount` INT NULL,
  `favouritesCount` INT NULL,
  `listedCount` INT NULL,
  `mediaCount` INT NULL,
  `location` LONGTEXT NULL,
  `protected` TINYINT(1) NULL,
  `linkUrl` LONGTEXT NULL,
  `linkTcourl` LONGTEXT NULL,
  `profileImageUrl` LONGTEXT NULL,
  `profileBannerUrl` LONGTEXT NULL,
  `url` LONGTEXT NULL,
  `verified` TINYINT(1) NULL,
  `userID` BIGINT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`userID`))
ENGINE = InnoDB;

CREATE UNIQUE INDEX `userID_UNIQUE` ON `CapitolRiot`.`User` (`userID` ASC) VISIBLE;

共有1个答案

闻人修平
2023-03-14

所以把它拼凑起来,你在运行:

user_df = pandas.json_normalize(user)

其失败原因是:

sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1054, "Unknown column 'id' in 'field list'")

假定您的用户结构如下所示:

{'username': 'EricFlut', 'displayname': 'Eric', 'id': 350130565, 'description': '', 'rawDescription': '', 'descriptionUrls': None, 'verified': False, 'created': '2011-08-07T07:38:54+00:00', 'followersCount': 149, 'friendsCount': 452, 'statusesCount': 756, 'favouritesCount': 141, 'listedCount': 7, 'mediaCount': 31, 'location': '', 'protected': False, 'linkUrl': None, 'linkTcourl': None, 'profileImageUrl': 'https://pbs.twimg.com/profile_images/1347294339672715267/HGJ4s-sv_normal.jpg', 'profileBannerUrl': None, 'url': 'https://twitter.com/EricFlut'}

和表结构类似:

CREATE TABLE IF NOT EXISTS `CapitolRiot`.`User` (
  `userName` LONGTEXT NULL,
  `displayName` LONGTEXT NULL,
  `description` LONGTEXT NULL,
  `friendsCount` INT NULL,
  `createdAt` DATE NULL,
  `followersCount` INT NULL,
  `statusesCount` INT NULL,
  `favouritesCount` INT NULL,
  `listedCount` INT NULL,
  `mediaCount` INT NULL,
  `location` LONGTEXT NULL,
  `protected` TINYINT(1) NULL,
  `linkUrl` LONGTEXT NULL,
  `linkTcourl` LONGTEXT NULL,
  `profileImageUrl` LONGTEXT NULL,
  `profileBannerUrl` LONGTEXT NULL,
  `url` LONGTEXT NULL,
  `verified` TINYINT(1) NULL,
  `userID` BIGINT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`userID`))

我认为pymysql.err.operationalerror最初是由mysql抛出的,Python只是将其报告给您。我的猜测是,mysql不知道在哪里编写您提供的user.id字段--可能是因为sqlalchemy没有正确地进行映射。

我知道这是一个包含大量内容的紧凑文档,但https://docs.sqlalchemy.org/en/13/orm/tutorial.html#declar-a-mapping可能是最好的查找位置。

 类似资料:
  • 问题内容: 我正在创建一个要在网页上显示的表,并且该表是由MySQL数据库中的数据填充的。我正在尝试做一些让我感到困难的事情。 首先,我试图通过JavaScript调用HTML中单独文件中存在的PHP代码。我认为我的工作正常,但是我不确定100%是否正确(因为表格不会显示)。我认为它工作正常,因为该表的 某些 代码(在PHP文件中)显示在FireBug中。 其次,我正在尝试使行交替显示颜色以便于查

  • 问题内容: 创建给定大小的零填充熊猫数据框的最佳方法是什么? 我用过了: 有更好的方法吗? 问题答案: 您可以尝试以下方法:

  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 问题内容: 使用SQLAlchemy,将创建一个Engine对象,如下所示: 如果to参数(在这种情况下为)中指定的数据库不存在,则访问将失败。如果指定的数据库不存在,是否可以告诉SQLAlchemy创建一个新数据库? 问题答案: 在postgres上,通常默认情况下存在三个数据库。如果您能够以超级用户身份(例如,角色)进行连接,则可以连接到或数据库。默认的pg_hba.conf只允许名为unix

  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{