1.用于建立与数据库的连接
2.创建对象:调用connect()方法
conn=connect(参数列表)
a.host:连接的mysql主机,如果本机则是'localhost'
b.port:连接的mysql主机的端口,默认是3306
c.db:数据库的名称
d.user:连接的用户名
e:passwd:连接的密码
f:charset:通信采用的编码方式,推荐使用utf8
3.对象的方法
a.close()关闭连接
b.commit()事务,所以需要提交才会生效
c.rollback()事务,放弃之前的操作
d.cursor()返回Cursor对象,用于执行sql语句并获得结果
1.执行sql语句
2.创建对象:调用Connection对象的cursor()方法
cursor1=conn.cursor()
3.对象的方法
a.close()关闭
b.execute(operation,[parameters])执行语句,返回受影响的行数
c.fectone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元祖
d.next()执行查询语句时,获取当前行的下一行
e.fetchall()执行查询时,获取结果集的所有行,一行构成一个元祖,再将这些元祖装入一个元祖返回
f.scroll(value,[mode])将行指针移动到某个位置
* mode表示移动的方式
* mode的默认值为relative,表示基于当前行移动到value,value为正则向下移动,value为负
则向上移动
* mode的值为absolute,表示基于第一条数据的位置,第一条数据的位置为0
4.对象的属性
a.rowcount只读属性,表示最近一次execute()执行后受影响的行数
b.connection获得当前连接对象
import pymysql
conn = pymysql.connect(
host='localhost',
port=3306,
db='test',
user='root',
passwd='mysql',
charset='utf8'
)
# 获取游标
cursor = conn.cursor()
# 插入数据
sql = "insert into students (name,sex,age) values ('%s','%s',%d)"
data = ('张良', 'male', '32')
count = cursor.execute(sql % data)
print(count)
conn.commit()
print('successful insert data!')
# 修改数据
sql = "update students set age=%d where name='%s' "
data = (36, '李白')
cursor.execute(sql % data)
conn.commit()
print('successful change data!')
# 查询数据
sql = "select name,sex from students where age='%s'"
data = (36)
cursor.execute(sql % data)
for row in cursor.fetchall():
print('Name:%s\t sex:%s\t' % row)
print('found the data!')
# 删除数据
sql = "delete from students where age='32' limit '%s'"
data = (32, 'male')
cursor.execute(sql % data)
conn.commit()
print('delete successful!')
# 事务处理
sql_1 = "update students set age=age+1 where name='李白'"
sql_2 = "update students set income=income+1000 where name='李白'"
sql_3 = "update students set expend=expend+10 where name='李白'"
try:
cursor.execute(sql_1)
cursor.execute(sql_2)
cursor.execute(sql_3)
except Exception as e:
conn.rollback()
print('cursor failed', e)
else:
conn.commit()
print('cursor successful', cursor.rowcount)
cursor.close()
conn.close()
# 创建集合,当插入的数据大于size时,后面的数据会覆盖前面的数据
db.createCollection('sub',{capped:true,size:4})
# 插入第一条数据
db.sub.insert({title:'linux',count:10})
db.sub.find()
# 插入第二条数据
db.sub.insert({title:'web',count:15})
db.sub.find()
# 插入第三条数据
db.sub.insert({title:'sql',count:8})
db.sub.find()
# 插入第四条数据
db.sub.insert({title:'python',count:12})
db.sub.find()
# 插入第五条数据
db.sub.insert({title:'mongo',count:4})
db.sub.find()
# 插入第六条数据
db.sub.insert({title:'css',count:8})
db.sub.find()