python连接mysql_python连接Mysql数据库

ff5d48d88810b4662d3606e245912179.png

目标:将下面的文件导入到数据库中

5704d8818165eb0abbc8853b8e095b9b.png

以下是示例,最后会有我直接运行的代码

import pymysql # 连接需要的包
db = pymysql.connect("localhost","root","123456","test" ) #连接数据库
cursor = db.cursor() #建立指针

# 创建你想要创建的表,SQL语句
# 一般MySQL的字符串定义为varchar类型

sql = """CREATE TABLE Log (
         device_id  VARCHAR(50) NOT NULL,
         os  VARCHAR(10) NOT NULL,
         os_version VARCHAR(10) NOT NULL,  
         start_time VARCHAR(30) NOT NULL,
         end_time VARCHAR(30) NOT NULL,
         duration int )"""
 
cursor.execute(sql)#执行sql语句

#通过行来读取
with open("file","r")as f:
    while 1:
        line = f.readline()
        if not line:
            break
        line = line.strip("n")
        
#写入数据
#同样通过编写sql语句执行
#sql语句实例

# sql中对于字符串values要写成'%S',不然sql语句不符合语法
sql = "insert into log(device_id,os,os_version,start_time,end_time,duration)values('%s', '%s','%s', '%s','%s',%d)"%(tags[0],tags[1],tags[2],tags[3],tags[4],int(tags[5]))

#关闭数据库
db.close()

注意使用异常数据流处理,否则一旦数据出错就会全部停下来

#获取异常
import traceback
try:

  ...

except Exception, e:
	print(str(e))
  ...

下面贴上我将开头的文件导入mysql数据库的代码

import pymysql
import traceback
db = pymysql.connect("localhost","root","77778888","scrapy" )
cursor = db.cursor()

with open("D:/Myfiles/大数据暑期项目/0720/game.log","r") as f:
    
#      创建表
#     sql = """CREATE TABLE Log (
#          device_id  VARCHAR(50) NOT NULL,
#          os  VARCHAR(10) NOT NULL,
#          os_version VARCHAR(10) NOT NULL,  
#          start_time VARCHAR(30) NOT NULL,
#          end_time VARCHAR(30) NOT NULL,
#          duration int )"""
 
#     cursor.execute(sql)
    
    while 1:
        line = f.readline()
        if not line:
              break
        line=line.strip('n')
        tags = line.split("t")
        try:
            num = int(tags[5])
            #  插入数据
            sql = "insert into log(device_id,os,os_version,start_time,end_time,duration)values('%s', '%s','%s', '%s','%s',%d)"%(tags[0],tags[1],tags[2],tags[3],tags[4],int(tags[5]))
            cursor.execute(sql)
               # 执行sql语句
            db.commit()
        except Exception as e:
               # 发生错误时回滚

            db.rollback()
            print(str(e))
db.close()

运行结果

e1ac9ab8aa36102652f697cdc452358f.png

数据量有点大,运行时间有点长。

很多初学者,对python的概念都是模糊不清的,python是什么,能做什么,学python有什么优势,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入我创建的千人python学习裙 ,裙聊号码:315346913,内有有大量实战学习资料(零基础以及进阶的经典实战)分享给大家,并且有资深讲师给大家免费授课,给大家分享目前国内最完整的python高端实战实用学习流程体系,让你少走弯路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值