zoukankan      html  css  js  c++  java
  • Python连接mysql数据库

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

     

    方法二、通过sqlalchemy连接数据库(推荐

    1、连接数据库

    from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://tblauopr:tblauopr@47.92.118.81:3306/tableau?charset=utf8')

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

    2、对数据库进行操作

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

    • pd.read_sql(推荐)——>可以查询表清单、直接返回整个表、或用dql语句返回部分列
    # 查看数据库中的数据表
    formlist = pd.read_sql('show tables', con = engine)
    

    # 通过表名返回整个表 data = pd.read_sql('tbl_orders',con = engine)

    # 数据框取数 data = pd.read_sql('select * from tbl_orders', 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)

    方法二、通过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的连接信息中找到,如下图:
    在这里插入图片描述

    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)对数据库操作完毕之后需关闭游标与链接

     

    2.2、数据操纵语言DML

    数据操纵语言DML是对表数据的增、删、改,主要有三种形式:

    (1) 插入:INSERT

    (2) 更新:UPDATE

    (3) 删除:DELETE

    2.3、数据定义语言DDL

    数据定义语言DDL用来创建、删除、更改数据库中的各种对象:表、视图、索引、同义词、聚簇等

    (1)创建表:create table

    (2)删除表:drop table

    (3)修改表:alter table

    如: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()

     

  • 相关阅读:
    HDOJ 1284 钱币兑换问题
    WA : csu1019 simple line editor
    HDOJ1232 并查集
    最长回文子串
    Where's Waldorf?
    csu 1148 词典
    csu 1011 Counting Pixels
    Product:java高精度乘法
    内置类型开方
    csu 1019 Simple Line Editor
  • 原文地址:https://www.cnblogs.com/zwt20120701/p/11432235.html
Copyright © 2011-2022 走看看