python--向数据库中循环插入数据

python–向数据库中循环插入数据

学习周期

10.10

11:00~12:00

10.11

14:40~16:30

10.12

23:04~23:54

10.13

18:34~19:20

10.16

10:20~11:40

一共使用五小时四十分钟.

代码原理

本次代码是实现数据库中循环插入模拟数据
pymysql
在python 3.x中有一个专门用于连接mysql数据库的库,叫pymysql,python2中使用的是mysqldb
下面罗列本次代码中使用到的pymysql中的方法:

  • connect:连接数据库

语法

pymysql.connect(
host=”数据库地址”,
user=”用户名”,
password=”密码”,
database=”数据库名”,
charset=”utf8”#注意不是utf-8
)
  • cursor:获取光标,以用于执行SQL语句

语法:pymysql.connect(…).cursor()#执行完毕返回的结果集默认以元组显示
#得到一个可以执行SQL语句并且将结果作为字典返回的游标,返回为字典型会比较方便
#pymysql.connect(…).cursor(cursor=pymysql.cursors.DictCursor)

  • execute:执行SQL语句

语法:pymysql.connect(…).cursor().execute(sql)#sql是定义的,要执行的SQL语句,下面会有讲解。

  • close:关闭

语法:这里有两个close方法,一个是cursor的,一个是connect的,他们的关闭方法同名了,所以需要注意。
pymysql.connect(…).cursor().close() #关闭光标对象
pymysql.connect(…).close() #关闭数据库连接

  • 定义SQL语句:
sql="""
create table user1(
id int auto_increment PRIMARY KEY,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8  #注意:charset='utf8' 不能写成utf-8
"""

下面是完整的代码:

import os
import time #含有sleep()的库
import pymysql #python连接数据库的库
import logging
import pandas as pd
import datetime #获取时间的库
 
db_name = 'test'
db_user = 'root'
db_pass = '123456'
db_ip = 'localhost'
db_port = 3306
 
 
#写入数据到数据库中
def writeDb(sql,db_data=()):
    """
    连接mysql数据库(写),并进行写的操作
    """
    try:
        conn = pymysql.connect(db=db_name,user=db_user,passwd=db_pass,host=db_ip,port=int(db_port),charset="utf8")
        cursor = conn.cursor()
    except Exception as e:
        print(e)
        logging.error('数据库连接失败:%s' % e)
        return False
 
    try:
        cursor.execute(sql, db_data)
        conn.commit()
    except Exception as e:
        conn.rollback()
        logging.error('数据写入失败:%s' % e)
        return False
    finally:
        cursor.close()
        conn.close()
    return True

 

while True:
    times = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    sql = """ INSERT INTO test(test_time,test_name) VALUES(%s,%s) """
    data = (times,'ha')
    result = writeDb(sql, data)
    time.sleep(1)

参考文献

1)https://www.cnblogs.com/xfxing/p/9322199.html (pymysql的用法)
2)https://blog.csdn.net/zhoudapeng01/article/details/99681970 (主要参照文献,凭此实现本次功能)
3)https://blog.csdn.net/weixin_40475396/article/details/79036838 (cursor用法)
4)https://blog.csdn.net/kai402458953/article/details/83413897 (python获取当前时间,并格式化)

总结

就这次功能来说,实现的功能很简单,花的时间也很少,满打满算也就花了5个多小时,其中还有很大一部分是花在了温习数据库基础知识上,花在功能实现上的时间可能也就1个多点小时吧。总的来说很有收获,很有成就感。学习计算机是公平的,只要努力就有收获,而且收获来的挺快。
继续加油,再接再厉!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值