mysqldb模块的简单用法
Posted 张家欢。。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqldb模块的简单用法相关的知识,希望对你有一定的参考价值。
# - *- coding:utf-8-*-
import urllib2
import re
import MySQLdb
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8‘)
class SQL(object):
conn=mysqldb.connect(host="localhost",
port=3306,
user="root",
passwd="123",
db="test",
charset="utf8",) #转换成utf8若没有则会出来乱码
def insert(self,name,content): #函数的调用
cur=self.conn.cursor()
cur.execute("insert into xiaoshuo VALUES (NULL ,‘%s‘,‘%s‘)"%(name,content)) #变量插入的形式 name是数据库表中的参数
cur.close()
self.conn.commit()
mysql=SQL()#实例化类
User_Agent= ‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0‘
url="http://book.qidian.com/info/3608595"
headers={‘User-Agent‘:User_Agent}
request=urllib2.Request(url,headers=headers)
htmll=urllib2.urlopen(request).read()
reg=re.compile(r‘<li data-rid=".*?"><a href="(.*?)" target="_blank" data-eid="qd_G55" data-cid=".*?" title=".*?">(.*?)</a>‘)
titles=re.finditer(reg,htmll)
for i in titles:
curl_=i.group(1)
name=i.group(2)
print "正在爬取%s本"%name
htmlll=urllib2.urlopen(‘http:‘+curl_).read()
regs=re.compile(r‘<div class="read-content j_readContent">\s*([\s\S]*?)\s*</div>‘)
contents=re.findall(regs,htmlll)
for m in contents:
content=m.replace(‘<p>‘,‘\r\n‘)
mysql.insert(name,content) #在数据库插入数据 name,content 和上边函数中的name不同,这是爬虫取到的name
print "已完成%s"%name
mysql.conn.close() #关闭数据库
mysql数据库小知识点
创建表格
cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
小说的内容应为text格式,不用填写len 最长的len是255 type(str)若字符长度小就用varchar
#插入一条数据 #cur.execute("insert into student values(‘2‘,‘Tom‘,‘3 year 2 class‘,‘9‘)")
#修改查询条件的数据 #cur.execute("update student set class=‘3 year 1 class‘ where name = ‘Tom‘")
#删除查询条件的数据 #cur.execute("delete from student where age=‘9‘")
以上是关于mysqldb模块的简单用法的主要内容,如果未能解决你的问题,请参考以下文章