首先我们要下载与连接数据库相关的python库,之前使用的是mysqlbd,但是这次使用失败,后来查阅资料才发现原来是mysqlbd只支持python2,但我使用的是python3,最后使用pymysql这个python库,利用pip install pymysql进行下载,当然这里重申一遍在国内最好使用豆瓣库(https://www.cnblogs.com/ZhangRuoXu/p/6370107.html点击打开链接)。
接着我们在代码中使用pymysql进行python与MYSQL之间的操作:
1.连接数据库(最好进行换行,这样看起来好一点)
def connect_db():
db = pymysql.connect(
host='localhost',
user='root',
db='chen', # 这个需要注意
password='**********', # 这个要保密呀
charset='utf8'
)
return db
2.数据库插入(本次只讲下我所做的insert操作)
def insert(input_path, stopwords_path):
db = connect_db()
cursor = db.cursor() # 创建一个游标对象
thu = thulac.thulac() # 这样在这里创建分词工具是为了节约时间
with open(input_path, 'r', encoding='utf-8') as file_read:
sentences = csv.reader(file_read)
weibo_no = 0
for sentence in sentences:
user_id = sentence[0]
reposts_count = sentence[1]
comments_count = sentence[2]
source = sentence[3]
create_time = sentence[4]
weibo_text = sentence[5]
segment = thu_seg(weibo_text, stopwords_path, thu)
if segment == []:
continue
weibo_no += 1
print(weibo_no)
# 加上ensure_ascii是防止汉字出现乱码
stringlistvalue = json.dumps(segment, ensure_ascii=False) # 这个是用来存储list数据类型的方法
# print(stringlistvalue)
'''
天坑呀,这个调了一晚上,一定要注意不同元素的分隔情况
'''
sql = "INSERT INTO weibo_67 VALUES('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (weibo_no, user_id, reposts_count, comments_count, source, create_time, weibo_text, stringlistvalue)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
db.commit()
except:
# 发生错误时回滚
db.rollback()
db.close() # 关闭数据库的连接
这里想说一声,那就是insert操作的天坑,一定要注意数据的分割符'%s',这样就会好很多。
同理要注意数据库的关闭这种细节。
3.其它
有一点要注意,sql一定要在try块中进行;另外,从数据库中读出的结果是以tuple的形式进行存储。