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.youkuaiyun.com/zhoudapeng01/article/details/99681970 (主要参照文献,凭此实现本次功能)
3)https://blog.youkuaiyun.com/weixin_40475396/article/details/79036838 (cursor用法)
4)https://blog.youkuaiyun.com/kai402458953/article/details/83413897 (python获取当前时间,并格式化)
总结
就这次功能来说,实现的功能很简单,花的时间也很少,满打满算也就花了5个多小时,其中还有很大一部分是花在了温习数据库基础知识上,花在功能实现上的时间可能也就1个多点小时吧。总的来说很有收获,很有成就感。学习计算机是公平的,只要努力就有收获,而且收获来的挺快。
继续加油,再接再厉!