添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
connect() 常用参数 说明
host 主机ip
user 用户名
password 密码
database 数据库
port 端口号
charset 字符集

调用 cursor() 方法即可返回一个新的 游标 对象,在连接没有关闭之前,游标对象可以反复使用

执行sql查询语句

In [3]:

sql="""  # 待执行的sql语句
select * from Student;
# 执行sql语句
cur.execute(sql)  

Out[3]:

In [4]:

结果表明是个游标对象:

Out[4]:

<pymysql.cursors.Cursor at 0x11ddc1190>

In [5]:

cur.description

主要返回游标的属性信息,官网的描述为:

Out[5]:

(('s_id', 253, None, 20, 20, 0, False),
 ('s_name', 253, None, 20, 20, 0, True),
 ('s_birth', 253, None, 20, 20, 0, True),
 ('s_sex', 253, None, 20, 20, 0, True))

In [6]:

columns = [col[0] for col in cur.description] columns

Out[6]:

['s_id', 's_name', 's_birth', 's_sex']

下图显示的是如何取出一条或者多条数据(按照顺序查询)

通过游标获取全部的数据:

fetch相关的函数都是获取结果集中剩下的数据,多次调用的时候只会从剩余数据中查询:

当第二次调用的时候结果就是空集。

通过游标获取查询的结果集的特点:

  • 可以获取1条、多条和全部数据
  • 在获取数据的时候是按照顺序读取的
  • fetchall函数返回剩下的所有行
  • 如果是末尾,则返回空元组;
  • 否则返回一个元组,其元素是每一行的记录封装的一个元组
  • 转成DataFrame

    columns = [col[0] for col in cur.description] # 数据集合 data = [] for i in cur.fetchall(): data.append(i) df = pd.DataFrame(data,columns=columns)

    保存成CSV数据

    SQL插入数据

    往MySQL数据库中插入数据:

    import pandas as pd
    import pymysql
    from sqlalchemy import create_engine
    connection = pymysql.connect(
      host='127.0.0.1',  # 本机ip地址
      port=3306,  # mysql默认端口号
      user="root",  # 用户名
      password="11112222",  # 密码
      charset="utf8", # 字符集
      db="test"  # 数据库
    cur = connection.cursor() # 建立游标
    # 待执行SQL语句
    sql="""  
    insert into test.Student(s_id, s_name, s_birth, s_sex) values("09","吴越","1998-08-08","男")
    # 执行sql语句
    cur.execute(sql)  
    

    很关键一步,要记得提交,这样最终才会写入数据库:

    connection.commit()
    

    执行SQL删除语句

    使用完之后记得关闭连接:

    connection.close()
    

    使用sqlalchemy

    第二种常用的方法是通过sqlalchemy来连接数据库:

    连接数据库

    import pandas as pd
    from sqlalchemy import create_engine
    # 依次填写MySQL的用户名、密码、IP地址、端口、数据库名
    # create_engine("数据库类型+数据库驱动://数据库用户名:数据库密码@IP地址:端口/数据库",其他参数)
    engine = create_engine("mysql+pymysql://root:password@localhost:3306/test")
    

    查询语句1

    查询语句2

    Pandas中的DataFrame写入新的表testdf中:

    show tables;
    

    使用read_sql读取

    使用Pandas自带的read_sql函数能够自行读取数据,读取上面创建的数据.

    官网:pandas.pydata.org/docs/refere…

    import pandas as pd
    from sqlalchemy import create_engine
    # 依次填写MySQL的用户名、密码、IP地址、端口、数据库名
    engine = create_engine("mysql+pymysql://root:password@localhost:3306/test")
    # sql语句
    sql4 = "select * from testdf;"
    df4 = pd.read_sql(sql4, engine)
            数据分析师
           
    私信