Python之Mysql导入导出

#!/usr/bin/python3
#creat date: 2020/03/08
#update time 2020/03/09
import  pymysql

def find(host,user, password,database,charset='utf8'):
    #建立连接
    conn = pymysql.connect(host=host,user=user,password=passwd,database=db,charset=charset)
    #建立游标
    cursor = conn.cursor()
    #指定sql语句,返回值类型为元组
    sql = "select * from words_counts_rank where id<10;"
    #执行语句
    cursor.execute(sql)
    #获取数据
    res = cursor.fetchall()
    print(res)
    #关闭连接
    conn.close()


def createtable(host, user, password,  charset='utf8'):
    conn = pymysql.connect(host=host, user=user, password=password, charset=charset,database='test')
    cursor = conn.cursor()
    sql = '''
        create table student
        (
            id int primary key,
            name char(20) not null,
            age int 
        );
         '''
    cursor.execute(sql)

    conn.close()
    print('创表成功')
def importdata_from_file(host, user, password, db,table,file, charset='utf8'):
    conn = pymysql.connect(host=host,user=user,password=password,
                           database=db,charset=charset)
    cursor = conn.cursor()
    with open(file) as filedata:
          for line in filedata:
            row = line.split(",")
            '''
            踩坑点:
             1、对于MySQL中的int类型数据,pymysql中不可用直接传python的int类型数据,填充字段都用%s替代
             2、当传MySQL中的字符串类型数据时,也不可直接传python中的str类型数据,需要遵循SQL语法,对str
                 类型数据要使用引号引起来
            '''
            sql = 'insert into %s values(%s,%s,%s);'%(table,row[0],"'"+row[1]+"'",row[2])
            cursor.execute(sql)
            #
            print(sql)
    #sql = 'insert into student values(10120,"yes",21);'
    #cursor.execute(sql)
    conn.commit()
    conn.close()
def sqldata2file(host, user, password, db, table, file, charset='utf8'):
    conn = pymysql.connect(host=host, user=user, password=password,
                           database=db, charset=charset)
    cursor = conn.cursor()
    sql = 'select * from %s'%table
    cursor.execute(sql)
    data = cursor.fetchall()
    print(data)
    with open(file,'w') as f:
        for row in data:
            f.write(str(row[0])+","+row[1]+","+str(row[2])+'\n')
    conn.close()


if __name__ == '__main__':
        #建立连接驱动
    host = 'localhost'
    user = 'root'
    passwd = '123'
    charset='utf8'
    db='test'
    table='student'
    #去掉注释运行函数
    #find(host,user,passwd,db,charset)
    #createtable(host,user,passwd,charset)
    #importdata_from_file(host,user,passwd,db,table,'datasource.txt')
    #sqldata2file(host, user, passwd, db, table, 'sqldata.txt')


 

你可能感兴趣的:(不靠谱的Python小代码)