Pandas的to_sql()插入数据到mysql中所遇到的问题

news2024/11/25 10:40:16

使用pymysql驱动API,出现如下错误:

DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table’ AND name=?;’: not all arguments converted during string formatting

1. pandas的数据表插入数据到mysql中所遇到的问题

1.1. pymysql驱动接口问题

根据以往经验,mysql操作很简单,安装pymysql驱动即可。

pip install pymysql

编写了通过pandas的to_sql写入数据库的代码。

import pandas as pd
import datetime
import uuid  # 数据库主键唯一

import pymysql

def mysql_db():
    # 连接数据库肯定需要一些参数
    conn = pymysql.connect(
        host="192.168.**.**",
        port=3306,
        database="M*****DB",
        charset="utf8",
        user="ty",
        passwd="****"
    )
    
    return conn
# df = 略去
# 增加唯一主键uuid
id = []
for i in range(len(df)):
    id.append(uuid.uuid1())
    
# 增加记录写入时间
df['CreateTime'] = datetime.datetime.now()
df['id'] = id

# 下面是出现问题的地方
conn = mysql_db()
tablename = '******'
dd = df[colsname]
# 浮点型截断数据处理
for k,v in cols_len.items():
    dd[k] = dd[k].round(v)
# 下面是出现问题的地方
dd.to_sql(tablename, conn,index=False, if_exists='append')

执行程序,报出如下问题:

DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table’ AND name=?;’: not all arguments converted during string formatting

尝试执行查询语句:

df0=pd.read_sql('select * from S*******y',conn)
df0

一切很正常,结果如下:
在这里插入图片描述

1.2. 关于数据库主键

主键一般使用uuid,python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:

  • uuid.uuid1():基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。

  • uuid.uuid2():算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。

  • uuid.uuid3(namespace,name):通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。其中,namespace并不是一个自己手动指定的字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。

  • uuid.uuid4():通过伪随机数得到uuid,是有一定概率重复的

  • uuid.uuid5(namespace,name):和uuid3基本相同,只不过采用的散列算法是sha1。

使用时,按数据集中的记录数,一次性生成uuid列表,并入到表中。

2. pandas的to_sql()有个隐藏的坑

解决办法:

查了pandas官网和其他不少有关to_sql的文章,都没有看到有提及数据库连接这个坑,不过在pandas官网的to_sql例子和其他文章的to_sql中都有一个共同点,就是引用sqlalchemy这个第三方ORM库来进行连接的,据此解决to_sql这个报错。

首先,安装 sqlalchemy。

pip install sqlalchemy

修改代码,增加函数:

def mysql_engine_db():
    # 连接数据库肯定需要一些参数
    engine = create_engine(
        'mysql+pymysql://ty:***@192.168.**.**:3306/M*******DB'
        # mysql+pymysql://用户: 密码@url: 端口/数据库
    )
    
    return engine

# 下面是出现问题的地方
engine= mysql_engine_db()
tablename = '******'
dd = df[colsname]
# 浮点型截断数据处理
for k,v in cols_len.items():
    dd[k] = dd[k].round(v)
# 下面是出现问题的地方
dd.to_sql(tablename, engine,index=False, if_exists='append')   

如此简单的解决问题!

参考:

宠乖仪. DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table‘ AND name=?. CSDN博客. 2021.09

weixin_43425561. DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table‘ AND name=?. CSDN博客. 2020.11

祁小彬. python的uuid. 简书. 2022.01

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627850.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

王道考研数据结构代码总结(后四章)

目录 树基本概念与属性树的基本性质 图拓扑排序 本文包含王道考研讲课中所涉及的数据结构中的所有代码,当PPT代码和书上代码有所区别时以咸鱼的PPT为主,个人认为PPT上的代码比王道书上的代码要便于理解,此外,本博客也许会补充一些…

css01:顶部导航栏,左右分离布局

css01&#xff1a;顶部导航栏&#xff0c;左右分离布局 效果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>顶部导航栏</title><style>body {margin: 0;padding: 0;}.top-nav {background-color: #ff…

Python采集二手车数据信息,看看啥车最得心意

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 环境使用: python 3.8 运行代码 pycharm 2022.3.2 辅助敲代码 专业版是付费的 <码可以免费用> 社区版是免费的 模块使用: 内置模块 无需安装 csv 第三方模块 需要安装的 requests >>> pip install req…

大数据可视化开源平台,一招让数据资源活泛起来!

在现代化办公环境中&#xff0c;数据资源也是非常重要的一种发展要素。有不少朋友会私信我们询问道&#xff1a;如何将企业内部的数据资源利用起来&#xff0c;真正发挥其价值为我所有&#xff1f;在这里&#xff0c;推荐大家了解大数据可视化开源平台&#xff0c;这是可以为企…

深度学习的各种卷积的总结

如果你听说过深度学习中不同种类的卷积&#xff08;比如 2D / 3D / 1x1 /转置/扩张&#xff08;Atrous&#xff09;/空间可分/深度可分/平展/分组/混洗分组卷积&#xff09;&#xff0c;并且搞不清楚它们究竟是什么意思&#xff0c;那么这篇文章就是为你写的&#xff0c;能帮你…

既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?

今天这篇文章呢&#xff0c;我会从以下几个方面来介绍&#xff1a; 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…

微信如何群发消息?如何群发突破200上限?

相信每到各种节日的时候&#xff0c;很多人都会发布或收到微信好友的节日祝福或活动通知。群发已经是一件很普遍的事了。逢年过节&#xff0c;发个微信祝福&#xff0c;是维系关系的必须&#xff1b;发个活动通知&#xff0c;是为了告知客户&#xff0c;促进销售。 01 微信自带…

2023年最新网络安全面试题合集(附答案解析)

前言 为了拿到心仪的 Offer 之外&#xff0c;除了学好网络安全知识以外&#xff0c;还要应对好企业的面试。 作为一个安全老鸟&#xff0c;工作这么多年&#xff0c;面试过很多人也出过很多面试题目&#xff0c;也在网上收集了各类关于渗透面试题目&#xff0c;里面有我对一些…

佩戴舒适音质悦耳,试试这款耳夹式耳机,塞那Z51S Pro Max上手

蓝牙耳机很多人每天都用&#xff0c;工作学习的时候戴上&#xff0c;可以随便听听舒缓心情&#xff0c;随便哪个平台都有丰富的音乐、播客等类型的资源&#xff0c;听着听着就下班了。市面上蓝牙耳机的种类这两年多了不少&#xff0c;我目前用的是一款sanag塞那Z51S Pro Max&am…

从Android UI收集流的更安全方法

从Android UI收集流的更安全方法 在安卓应用中&#xff0c;通常从UI层收集Kotlin flows以显示屏幕上的数据更新。但是&#xff0c;为了确保不做过多的工作、浪费资源&#xff08;包括CPU和内存&#xff09;或在视图转到后台时泄漏数据&#xff0c;您需要收集这些flows。 在本…

(2023,语义混合)处理神经网络中语义和视觉对齐的差异

Addressing Discrepancies in Semantic and Visual Alignment in Neural Networks 公众号&#xff1a;EDPJ 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 4. 实验 5. 结果 6. 讨论与结论 参考 S. 总结 S.1 主要思想 S.2 语义混合 S.3 方法 0. 摘要 对于图像分类任…

苹果Vision Pro将引爆人机交互的重大变革

2023年6月6日&#xff0c;苹果发布了大家期待已久的Vision Pro&#xff0c;Vision Pro是一款专业级MR设备&#xff0c;融合了虚拟现实(VR)和增强现实(AR)技术&#xff0c;可以让用户完全沉浸在高分辨率显示内容中。允许用户以一种全新的方式在其周围的空间中查看APP。用户可以用…

unreal 5 实现角色拾取功能

要实现角色拾取功能&#xff0c;我们需要实现蓝图接口功能&#xff0c;蓝图接口主要提供的是蓝图和蓝图之间可以通信&#xff0c;接下来&#xff0c;跟着教程&#xff0c;实现一下角色的拾取功能。 首先&#xff0c;我们要实现一个就是可视区的物品在朝向它的时候&#xff0c;会…

基于云技术的域名解析系统研究一:传统解析技术弊端(中科三方)

域名解析是互联网的一项重要基础作用&#xff0c;主要用于将域名翻译成计算机可识别的IP地址&#xff0c;完成对网络中其他主机的寻址任务。我们日常工作生活中的大部分网络应用&#xff0c;如网站访问、电子邮件以及其他各种web应用服务&#xff0c;都需要经过域名解析的寻址去…

Oracle的登陆问题和初级学习增删改查

1&#xff1a;学习Oracle首先需要安装Oracle&#xff0c;网上已经有很多很多教程了&#xff0c;这里不做叙述&#xff0c;自己百度即可&#xff0c;这里安装的标准版&#xff0c;个人根据需求安装学习或者企业开发即可。如果安装出错&#xff0c;自己百度Oracle的卸载即可&…

终极指南:Scrum中如何设置需求优先级

需求众多不知道如何下手&#xff1f;总想先做简单的需求&#xff0c;复杂需求却一拖再拖&#xff1f;那么&#xff0c;我们是时候开始考虑如何设置需求优先级了。 本期终极指南将展示如何为需求设置有效优先级&#xff0c;如何有效管理工作量&#xff0c;让效率指数倍增长&…

软件测试和软件开发哪个发展更好?我来告诉你怎么选

目录 一、基本素质要求 二、性格要求 三、入职门槛 四、转行难度 五、知识结构 六、竞争压力 七、职业发展 八、职业前景 总结 一、基本素质要求 这里的基本素质包括比如速辑思维能力、分析问题能力、沟通能力、协作能力、怀疑精神等方面&#xff0c; 【软件测试】: …

详细分析开发一个Servlet的步骤从实现Servlet接口,继承GenericServlet抽象类,继承HttpServlet抽象类逐步完善

实现Servlet接口 jakarta.servlet.Servlet是Servlet规范中的核心接口 Servlet对象的生命周期 Servlet对象的创建&#xff0c;对象上方法的调用&#xff0c;对象最终的销毁都是由Tomcat服务器全权负责的,JavaWeb程序员是无权干预的 第一步: Tomcat服务器本质是一个WEB容器, …

cocos creator 鼠标画笔|画线

cocos creator 版本使用 至少适配版本2.3.2以上 案例: 简要思路:MOUSE_MOVE事件和Graphics组件实现 前端也可以通过canvas和mousemove事件实现&#xff0c;原理一致 具体步骤如下&#xff1a; 1.添加节点Node 2.在Node节点上绑定组件Graphics 3.添加下方脚本drawcontroll.ts…

JMeter测试笔记(三):基本组件的使用

引言&#xff1a; 关于JMeter的测试笔记&#xff0c;这是第三篇&#xff0c;主要是介绍JMeter的基本组件的使用。 在进行性能测试时&#xff0c;了解并掌握基本组件的使用非常重要&#xff0c;因为它们是构成JMeter测试计划的基础。在本文中&#xff0c;我们将深入了解JMeter…