关于python连接mysql相关知识(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DM_learner/article/details/81362973

之前导入数据库的方法是SQL语句和集合python正常编程的方法,整个流程相对较复杂,在这里我介绍一种更加简便的方法:

即结合pandas和sqlalchemy来将数据导入数据库,代码如下:

#!/usr/bin/env python3
#coding=utf-8
import pymysql

import pandas as pd
from sqlalchemy import create_engine

host='localhost'
port=3306
user='root'
password=''
db='data_zj'

con=create_engine(str(r"mysql+pymysql://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))

def invert_database(file,field):
    df=pd.read_excel(file,encoding="utf-8")
    print(df)
    df.to_sql(field,con=con,if_exists='append',index=False)

invert_database(r'D:\软件\整理后的数据\城市编码后MySQLData\农业.xlsx','agriculture')

 

在这里有几点要说明一下:

(1)关于连接数据库,常见的是这样的表达:

create_engine(str(r"mysql+pymysql://%s:" + '%s' + "@%s/%s") % (user, password, host, db))

这样做会造成乱码,所以应该修改成这样:

create_engine(str(r"mysql+pymysql://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))

(2)if_exists有三种情况:

if_exists='fail',表示如果数据库中已经存在这样的表格,在这里将不做任何操作;

if_exists='append',表示如果数据库中存在有这样的表格,那么就插入数据,在这里要补充一点,表格数据的列名要和数据库中表格的列名要相同,这样才能匹配插入数据。如果不存在这样的表格,那么就创建表格。

if_exists='replace',表示如果数据库中存在这样的表格,那么就删除它并重新创建表格再插入数据。

(3)关于navicat for mysql 如何将表ID排序重1开始的问题

在这里我的解决方法是:

第一步,打开数据库:

第二步,选中目标表格并按F6键

        +       

然后输入TRUNCATE TABLE +表格名,即可清除这个表,使ID重新从1自增。

 

 

猜你喜欢

转载自blog.csdn.net/DM_learner/article/details/81362973