• 【python】python vs Excel ( 与mysql数据库之间的交互)


    通过python与mysql数据库做交互

    到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。

    python与数据库之间的交互有很多。可以通过第三方包及API与不同的数据库之间做交互。我个人的环境资源有限,因此这篇稿子是主要记录python是如何同mysql数据库之间进行交互的。

    一,安装并配置mysql数据库

    https://www.cnblogs.com/liupengpengg/p/7092789.html

    上述是我mysql数据库的章节,感兴趣的可以按照此步骤进行安装。这个是基于windows平台的安装。如果您装的是linux的话,可以yum install mysql 或者通过官网下载更新版本的mysql到本地安装。

    友情提示:mysql数据库安装过后,windows的话要自行创建my.ini配置文件。里面的配置非常的重要如果配置项有问题,会导致mysql的services不能被正常启动。建议配置项一个个配置然后restart mysql的服务,能启动说明此配置项没问题。另外mysql配置完毕后默认很多权限及参数是OFF的。比如说自动load本地file到数据库默认就是不被打开的。所以要在my.ini中配置允许load本地文件才可以通过load data infile命令将本地文件传入mysql。具体我就不一一讲解了。遇到问题请问度娘。

    我把我本人遇到的坑的解决方案链接提供在下方了。如果您也遇到了请尝试解决。

    https://my.oschina.net/u/1018607/blog/857728

    https://blog.csdn.net/xb1231232/article/details/106181694

    二,安装 Heidisql (免费的mysql图形化管理工具) 

    https://www.heidisql.com/download.php

     

    三,安装mysql依赖包

    安装完mysql数据库后,对应的也要在python中安装对应的依赖包,如下。

    import  pymysql
    from sqlalchemy import create_engine

    如果你直接在python IDE中导入这两个包是肯定不存在的。如果您用的事pycharm的话可以尝试intall这两个包如果安装成功最好。如果不行请通过windows命令行中的pip来进行安装。

    建议不管您用的是什么IDE都直接通过pip install依赖包。

    pip install pymysql
    pip install sqlalchemy
    

      

    四,安装EditPlus 5 或者 EmEditor工具

    标题这两个工具可以将我们Excel中导出的xlsx,csv, txt 等格式的数据做清洗用的。可以帮助我们更好的对数据进行规整,把规整过后的数据存入数据库。

    EditPlus 5 安装及使用

    https://blog.csdn.net/syz201558503103/article/details/102327356

    EmEditor 安装及使用

    https://www.cnblogs.com/eyesfree/p/9993304.html

    https://www.cr173.com/html/25305_1.html

     

    五,python中操作mysql数据库案例演示

    注释:首先如何使用mysql这里不作解释,如果有疑问请参照我mysql篇的章节。以下的所有演示都是基于数据库已经有数据,或者说有空表,如何用python对其进行增删改查访问等操作的演示。下面这个就是我用HeidiSQL打开的MySQL数据库。接下来我们进行的所有操作都围绕all_students这章表来进行。

    1. 通过python打开mysql中的all_students这章表

    注意:代码依然是基于jupyther来运行的。如果您用的是.py的文件打印请都用print()来运行。

    #%%
    import pandas as pd
    import  pymysql
    from sqlalchemy import create_engine
    
    #链接mysql数据库(指定到database名)
    con = create_engine("mysql+pymysql://root:root@localhost/liupeng")
    
    #链接到具体的table
    read_sql01 = pd.read_sql('all_students',con)
    read_sql01.head(10) #读取数据表内容(10行)
    

      

    2. 按照指定的表头来读取mysql数据

    #按照指定的表头来读取数据
    read_sql02 = pd.read_sql('all_students',con,columns=["cls_id","exam_nu","stu_name","gender","total"])
    read_sql02.head(3)
    

      

    3. 按照mysql语句对数据进行筛选

    #%%
    #通过reqd_sql(sql语句)的方式读取部分数据
    read_sql03 = pd.read_sql('select cls_id,stu_name,total from liupeng.all_students where cls_id < 3 order by total',con=con)
    read_sql03
    

      

    4. 向mysql数据表添加一条数据(增)

    注释:对于mysql中的增删改所用到的命令都是con.execute函数!!!

    数据插入前:

    #执行sql的增删改操作用.execute("sql语句")的函数
    
    #追加一条sql语句到mysql数据库
    con.execute("insert into liupeng.all_students values ('1','刘景芮',100,100,98,298,'女',2018746)")  

    数据插入后:

    5. 向mysql数据表修改一条数据(改)

    注意:这里我查的是exam_nu=2018746,因为查名字已经变成关羽了。所以用唯一的id号来进行查询

    con.execute("update liupeng.all_students set stu_name='关羽' where exam_nu=2018746 ")
    

      

    6. 向mysql数据库删除一条数据(删)

    注意:条目被删除后无论你指向stu_name还是exam_nu,返回结果都是0,因为数据本身已经被删除。

    7. 如何将本地数据添加到MySQL数据表中

    强调:如果您的Mysql数据库的my.ini没有做以下的配置建议把配置写到my.ini中。如果您只是临时使用一下,请按照我的方法运行。不然MySQL不支持本地文件的加载。

    例如我们把以下一个txt文本导入到mysql数据库中

    1	魏薇	73	59	54	186	女	2018010
    1	朱瑞麒	59	60	34	153	女	2018012
    1	黄慧婕	73	81	84	238	女	2018027
    1	张章	60	55	48	163	男	2018094
    1	沈政宇	51	71	27	149	男	2018108
    1	宋承泽	68	74	53	195	男	2018113
    1	马彦冰	77	72	52	201	女	2018148
    1	马恺	61	83	72	216	男	2018166
    1	王锦程	80	96	83	259	男	2018167
    1	闫瑾	74	64	64	202	女	2018196
    1	王晓渝	45	12	28	85	女	2018198
    1	王浩然	79	86	69	234	女	2018246
    1	徐菁	54	90	60	204	女	2018256

    创建MySQL对应的表格,我个人比较懒,因此我直接通过like命令复制了all_students的表结构来创建的stu_test表。

    创建过后的结构是这样的。。其中没有任何的内容只有结构!!

    导入数据到mysql中的stu_test表中。对于数据的导入可以直接通过图形化界面来做。也可以通过命令行来做。

    这里为了省事,我直接在底层的mysql数据库通过load data infile的方法把数据追加到stu_test表格中了。

    当然如果您想通过python中的语句来将数据导入mysql数据库中也是可以的。在此我奉上以下链接希望对大家有所帮助。

    https://blog.csdn.net/xiaoxiao_plus/article/details/94456986

    https://www.cnblogs.com/bjwu/p/10250759.html

  • 相关阅读:
    C语言作业(心理魔术)
    心理魔术
    作业
    作业
    自定义打包小游戏的build template,接入SDK,
    JavaScript_call,bind,apply的区别
    JavaScript原型链的理解
    学习笔记—前端基础之ES6的数组
    学习笔记 — 前端基础之ES6(2)
    学习笔记 — 前端基础之ES6(1)
  • 原文地址:https://www.cnblogs.com/liupengpengg/p/13396674.html
Copyright © 2020-2023  润新知