首页 > 代码库 > mysqldb模块的简单用法

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="http://www.mamicode.com/(.*?)" 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模块的简单用法