Python连接MySQL数据库

       尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有必要学好一门数据库,不管你是做数据分析,还是网络爬虫,Web 开发、亦或是机器学习,你都离不开要和数据库打交道,而 MySQL 又是最流行的一种数据库,这篇文章介绍 Python 操作 MySQL 的几种方式。

一、通过pymysql进行连接

        数据库的访问无非是"建立数据库连接–>>执行操作–>>关闭连接"这样的过程,用pymysql也是如此。

1、建立连接
import pymsql
conn = pymysql.connect(host="47.92.118.81",port=3306,user="tblauopr",passwd="tblauopr",db="tableau",charset="utf8")

其中: host是主机名或者IP地址;port是端口号,一般为3306,user为用户名,passwd为连接密码, db为该连接下的数据库,charset为字符编码。 这些字段都可以在MySQL的连接信息中找到,如下图:
Python连接MySQL数据库_第1张图片

2、对数据库进行操作
2.1、数据查询语言DQL

       数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块,只需先通过 cur = conn.cursor() 获取操作游标,再通过 .execute() 来执行需要完成的SQL语句即可。

# 获取操作游标
cur = conn.cursor()
sql = "select * from tbl_orders limit 10"
#执行语句
cur.execute(sql)
# 通过fetchall获取数据
data = cur.fetchall()
# 关闭游标
cur.close()
# 关闭连接
conn.close()

注意:(1)、执行sql语句后需通过.fetchall()返回,且返回的是 元组 形式的数据(如下图),而不是数据框;
            (2)、对数据库操作完毕之后需关闭游标与链接。
Python连接MySQL数据库_第2张图片

2.2、数据操纵语言DML与数据定义语言DDL

数据操纵语言DML主要有三种形式:
(1) 插入:INSERT、(2) 更新:UPDATE、(3) 删除:DELETE
数据定义语言DDL用来创建数据库中的各种对象:表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
       进行此类操作时,步骤与DQL相同,但是多了一个 提交 的步骤: .commit() ,只有在提交之后才能被执行。

cur = conn.cursor()
sql = " create table test select * from tbl_orders "
cur.execute(sql)
# 提交
conn.commit()
cur.close()
conn.close()

二、通过sqlalchemy连接数据库

1、连接数据库
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://tblauopr:[email protected]:3306/tableau?charset=utf8')

       通过create_engine创建一个mysql连接器,其格式为:mysql+pymysql://用户名:数据库密码@IP地址:端口号/数据库名称?charset=编码

2、对数据库进行操作

       创建好mysql连接器后,就可以利用pandas中的函数对数据库进行操作了,注意添加参数 con = engine

  • pd.read_sql_query
import pandas as pd
## 使用read_sql_query查看数据库中的数据表数目
formlist = pd.read_sql_query('show tables', con = engine)

## 取数操作,返回一个数据框
get_data_sql = "select * from tbl_orders"
data = pd.read_sql_query(get_data_sql, con = engine)
  • pd.read_sql_table
##使用read_sql_table读取订单详情表,通过表名返回整个表
usarrest = pd.read_sql_table('tbl_orders', con = engine)
  • pd.read_sql
#通过表名返回整个表
data = pd.read_sql('tbl_orders',con = engine)
#数据框取数
data = pd.read_sql('select * from tbl_orders', con = engine)
#查看数据库中的数据表数目
formlist = pd.read_sql('show tables', con = engine)

你可能感兴趣的:(MySQL,Python)