pandas连接数据库
import pymysql
from sqlalchemy import create_engine
sql = 'select * from data'
conn = create_engine('mysql+pymysql://root:[email protected]:3306/test')
pdata = pd.read_sql(sql,conn)
print(pdata)
下面解释一下上面的代码:
- 导入两个包 pymysql 和sqlalchemy
- create_engine(url)此函数作用是与数据库建立连接,下面主要说一下里面url这个参数:
在这里截取代码中官方给的注释:
The string form of the URL is
``dialect[+driver]://user:password@host/dbname[?key=value..]``, where
``dialect`` is a database name such as ``mysql``, ``oracle``,
``postgresql``, etc., and ``driver`` the name of a DBAPI, such as
``psycopg2``, ``pyodbc``, ``cx_oracle``, etc. Alternatively,
具体意思是 这个url是个字符串型,具体格式是dialect[+driver]: //user:password@host/dbname[?key=value…]
dialect :指定连接数据库类型 我填的是mysql
driver:驱动,也就是数据库连接驱动,python中数据库的连接驱动挺多的,我使用的是pymysql
user:数据库的用户名
password:数据库的密码
host:主机地址 本地通常是localhost 或者127.0.0.1
dname:数据库库名
3.pd.read_sql(sql,conn) 这个就是从数据库读取数据返回值为DataFrame类型的 第一个参数是 sql语句 第二个就是conn连接器了。
数据保存到数据库中
import pandas as pd
import numpy as np
import pymysql
from sqlalchemy import create_engine
conn = create_engine('mysql+pymysql://root:[email protected]:3306/test')
pdata = pd.read_csv('tips.csv')
print(pdata.head(10))
try:
pdata.to_sql('data1',conn,if_exists='replace',index=False)
except:
print('error')
具体解释:
- pdata = pd.read_csv(‘文件名称’) 此方法是pandas 读取csv文件函数 返回值类型是DataFrame
- pdata.to_sql(‘表名’,连接器,if_exists=’ ') if_exists 这个属性有三种值,为fail时,如果次表名重复,则报错;为replace时,删除已存在的这个表,创建这个表并添加数据 为append 则在该表的最后将数据添加到最后。
控制台输出的数据:
插入数据库后显示的数据:
我使用的时seaborn官方提供的数据,里面有很多种数据,我一定打包好了,提供大家下载:
seaborn数据资源下载