connect() 常用参数
|
说明
|
host
|
主机ip
|
user
|
用户名
|
password
|
密码
|
database
|
数据库
|
port
|
端口号
|
charset
|
字符集
|
调用 cursor() 方法即可返回一个新的
游标
对象,在连接没有关闭之前,游标对象可以反复使用
执行sql查询语句
In [3]:
sql=""" # 待执行的sql语句
select * from Student;
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',
port=3306,
user="root",
password="11112222",
charset="utf8",
db="test"
cur = connection.cursor()
sql="""
insert into test.Student(s_id, s_name, s_birth, s_sex) values("09","吴越","1998-08-08","男")
cur.execute(sql)
很关键一步,要记得提交,这样最终才会写入数据库:
connection.commit()
执行SQL删除语句
使用完之后记得关闭连接:
connection.close()
使用sqlalchemy
第二种常用的方法是通过sqlalchemy来连接数据库:
连接数据库
import pandas as pd
from sqlalchemy import create_engine
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
engine = create_engine("mysql+pymysql://root:password@localhost:3306/test")
sql4 = "select * from testdf;"
df4 = pd.read_sql(sql4, engine)
数据分析师