连接本地安装的mysql的时候, 创建连接engine的固定写法:
from sqlalchemy import create_engine
def engines():
"""建立连接并返回数据库的引擎 """
host = 'localHost'
db = 'practice' # 数据库名
user = 'znnxxn' # 账号
password = '123456789' # 密码
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
return engine
连接远程mysql的时候, 创建连接engine的固定写法:
from sqlalchemy import create_engine
import pandas as pd
def engines():
"""建立连接并返回数据库的引擎 """
host = '183.192.19.38' # IP地址
db = 'practice' # 数据库名
user = 'znnxxn' # 账号
password = '123456789' # 密码
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
return engine
从数据库取数
import pandas as pd
def get_data(sql,engine):
print('正在取数....')
df=pd.read_sql(sql,con=engine)
print('从数据库中拿到了数据!')
return df
往数据库写数据
def save_res(data,engine,tname,db_name):
"""将DataFrame的数据写入数据库
data: 要往数据库中写的DataFrame
engine: 上面提到的engines 函数的返回值
tname: 表名
db_name: 数据库名 """
print('数据有%s行'%data.shape[0])
data.to_sql(tname,schema=db_name,con=engine,if_exists='append', index=False)