方法一:

1. python连接mysql数据库:需要用到 pymysql 库和 sqlalchemy库:

import pandas as pd
from sqlalchemy import create_engine
import pymysql

创建连接 create_engine:

con_engine = create_engine('mysql+pymysql://username:passwd@localhost:3306/database_name')
# 示例:
# con_engine = create_engine('mysql+pymysql://root:123456@localhost:3306/database_name')
# username:数据库用户名,例如 root
# passwd:密码,例如 123456
# localhost:host主机地址,例如:127.0.0.1
# 3306:是数据库的端口,一般是3306,但是也可能改变
# database_name:数据库名
con_engine = create_engine('mysql+pymysql://username:passwd@localhost:3306/database_name?charset=utf8') #需要时也可用

2. 提供 sql 语句

sql_ = "select * from table_name;" #table_name某个表名

3. 执行查询,使用 read_sql_query 得到pandas的dataframe数据

df_data = pd.read_sql_query(sql_, con_engine)
xxx = df['key_words'].tolist()
print(xxx)

4. 写数据到 mysql 数据库

#写两列数据,建立dataframe格式数据
df_write = pd.DataFrame({'id_py':[1,2,3,4],'name_py':['Tom','Bob','Cathy','Jack']})
df_write.to_sql('table_py', con_engine, index = False) # index = False表示不加索引列,写到table_py表,如果表已经存在,会报错:ValueError: Table 'table_py' already exists.

方法二:使用 read_sql

# username = 'root'
# passwd = '123456'
# database_name = 'db_test'
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8') #通过参数形式传递,参数是字符串形式
sql_ = "select * from table_name;" #table_name某个表名
df_data = pd.read_sql(sql_ , con_engine)

方法三:直接使用pymysql进行查询,插入数据、更新数据、删除数据等修改数据表的操作需要添加 commit 和 rollback 语句

import pymysql

# 建立数据库连接,username, passwd, database_name都是如上,预先定义的参数,localhost也可以替换成某个数据库的ip地址
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8') # 使用cursor()方法获取游标
cursor = con_engine.cursor() # SQL语句
sql_ = "select * from table_name;"
try:
# 执行SQL语句
cursor.execute(sql_)
# fetchall()获取所有记录,形成的是元组,results = cursor.fetchmany(10)获取前10条,results = cursor.fetchone()获取一条数据
results = cursor.fetchall()
for row in results: #依次获取每一行数据
id_ = row[0] #第1列
key_words_ = row[1]
type_words_ = row[2]
address_name_ = row[3]
# 打印结果
print(id_,key_words_,type_words_,address_name_)
except:
print ("Error: unable to fetch data") # 关闭数据库连接
con_engine.close()

例如删除操作:

import pymysql

# 建立数据库连接,username, passwd, database_name都是如上,预先定义的参数,localhost也可以替换成某个数据库的ip地址
con_engine = pymysql.connect(host = 'localhost' ,user = username, password = passwd, database = database_name, port=3306, charset = 'utf8') # 使用cursor()方法获取游标
cursor = con_engine.cursor() # SQL语句
sql_ = "delete * from table_name where id > 5;"
try:
# 执行SQL语句
cursor.execute(sql_)
con_engine.commit() #提交修改,类似github的commit操作
except:
con_engine.rollback() #不成功则回滚 # 关闭数据库连接
con_engine.close()

参考:

https://www.jianshu.com/p/238a13995b2b

https://blog.csdn.net/luoluopan/article/details/100074959

https://www.runoob.com/python3/python3-mysql.html

python读写mysql数据库的更多相关文章

  1. 使用python将mysql数据库的数据转换为json数据

    由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...

  2. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  3. python使用mysql数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  4. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  5. shell中读写mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  6. python 连接Mysql数据库

    1.下载http://dev.mysql.com/downloads/connector/python/ 由于Python安装的是3.4,所以需要下载下面的mysql-connector-python ...

  7. Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

    这里的前提是windows上已经安装了MySQL数据库,且配置完成,能正常建表能操作. 在此基础上仅仅需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了.仅仅有1M ...

  8. python对mysql数据库操作的三种不同方式

    首先要说一下,在这个暑期如果没有什么特殊情况,我打算用python尝试写一个考试系统,希望能在下学期的python课程实际使用,并且尽量在此之前把用到的相关技术都以分篇博客的方式分享出来,有想要交流的 ...

  9. 使用python操作mysql数据库

    这是我之前使用mysql时用到的一些库及开发的工具,这里记录下,也方便我查阅. python版本: 2.7.13 mysql版本: 5.5.36 几个python库 1.mysql-connector ...

随机推荐

  1. 【翻译】Flink Table Api & SQL — 内置函数

    本文翻译自官网:Built-In Functions  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/fu ...

  2. tomcat一闪而过,无法开启

    记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause,然后启动该脚本 正常情况下回像下图显示 如果一闪而过的话,可 ...

  3. node端代理浏览器路由 解决浏览器跨域问题

    var _ = require('lodash'); var request = require("request"); /* @LM 2017-02-16 node端代理浏览器路 ...

  4. PCL

    PCL(PointCloudLibrary)——是一个的模块化的现代C++模板库. 其基于以下第三方库:Boost.Eigen.FLANN.VTK.CUDA.OpenNI.Qhull,实现点云相关的获 ...

  5. TortoiseGit,git 未能顺利结束 (退出码 1)

    其中一个原因是不能把Git下所有文件全部删除,一个都没有,就会报这个错误. 注:空文件夹git定义为空,不是文件.所以只有空文件夹也会报这个错误.

  6. .Net Core 1.1打包发布到Linux

    在 .Net Core 1.0 中我们打包跨平台包是在 project.json 中配置的 但是 .Net Core 1.1 去掉了 project.json 具体咋办参考:https://blogs ...

  7. C++中print和printf的区别

    print与printf的区别 1,print 中不能使用%s ,%d 或%c: 2,print 自动换行,printf 没有自动换行.

  8. OpenGL入门学习--超级好的资料

    近几天,由于工作项目需要利用openGL显示STL格式的三维模型,分享下面的BOOK,这个老外写得真是TMD太好了,资料免费! http://www.glprogramming.com/red/ind ...

  9. QML CheckBox的使用

    "人类的全部历史都告诫有智慧的人,不要笃信时运,而应坚信思想. -- 爱献生" 这个在QT creator 帮助文档中非常容易查到. Import Statement: impor ...

  10. java8新特性六-Optional 类

    Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. Optional 是个容器:它可以保存类型T的值,或者仅仅保 ...