一 * python 连接数据库
Ⅰ 操作数据库
1.首先下载 pip install pymysql / python -m pip install pymysql
2.导入模块 import pymysql
3.打开数据库建立连接 connection 对象
用于建立python与数据库的连接,创建对象的话用connect方法
conn=connect(参数列表)
参数列表内容包含*
· host 连接的mysql主机 是localhost
· port 连接的mysql主机的端口号 默认3306
· user 数据库连接的用户名 user="root"
·passwd 数据库连接的密码 passwd="root"
· db 连接的数据库名称
·charset 连接数据库的字符编码 utf8
4.建立游标 指针 确定对什么进行操作
5.进行相关的增删改查
6.对数据库进行提交
7.关闭游标
8.关闭数据库连接
Ⅱ python连接数据库的完整代码
#导入模块
import pymysql
#python和数据库建立连接connect(参数)
conn=pymysql.connect(host="39.98.39.173",port=13306,user="root",passwd="root",db="杨成森",charset="utf8")
print(conn)#测试打印
print(type(conn))
#在表格中确定操作行 来建立游标指针
cur=conn.cursor()
#增删改会返回影响的行数
#执行sql语句 execute语句返回影响的行数来提示操作成功
#插入数据
#num=cur.execute("insert into student values(default,'jackson','男',20,'2020-05-30','湖北',2)")
#删除数据
#num=cur.execute("delete from student where name='小李' ")
#修改数据
num=cur.execute("update student set name='张玮' where id=2")
print("影响的总行数*",num)
#提交数据库连接
conn.commit()
#关闭游标
cur.close()
#关闭数据库连接
conn.close()
二 *** sql中的值用占位符代替
1.导入数据库模块
2.建立数据库连接
3.建立游标指针
4.对数据库进行增删改
增删改会返回影响的行数 表格会进行改变
查看的话会返回结果数
5.对数据库进行提交
6.关闭游标
7.关闭数据库连接
①"""占位
import pymysql
conn=pymysql.connect(host="39.98.39.173",port=13306,user="root",passwd="root",db="杨成森",charset="utf8")
print(conn)
cur=conn.cursor()
sql="insert into student values (default,%s,%s,%s,%s,%s,%s)"
num=cur.execute(sql,('way','男',15,"1998-01-05","陕西",1))
print("影响的行数*",num)
if num>0:
print("数据库数据插入成功")
else:
print("数据库数据插入不成功")
conn.commit()
cur.close()
conn.close()
②批量插入数据
1.导入模块
2.python连接数据库
3.建立游标指针
4.进行增删改查的操作
5.提交数据
6.关闭游标指针
7.关闭数据库连接
"""
import pymysql
#ip地址 端口号 用户名 密码 数据库 字符编码
conn=pymysql.connect(host="39.98.39.173",port=13306,user="root",passwd="root",db="杨成森",charset="utf8")
cur=conn.cursor()
sql="insert into student values(default,%s,%s,%s,%s,%s,%s)"
#批量执行
num=cur.executemany(sql,[("ammy","女",25,"1998-01-05","深圳",2),("哈伊亚","女",20,"2000-01-01","新疆",1),("haha","男",30,"1999-04-18","北京",1)])
print("批量插入影响的行数*",num)
conn.commit()
cur.close()
conn.close()
③ 对象的方法
close()事务 关闭连接
commit()事务 需要提交才会生效的数据
rollback()事务 放弃之前的操作
cursor() 返回cursor对象 用于执行sql语句并且获得结果
来获取结果并且进行增删改查操作
execute 增insert into 表名 values 删 delete from 表名 where 条件 改 update 非查询
num=cur.execute(sql,参数)
executemany()批量执行非查询 返回的结果是影响的行数
num=cur.execute(sql,[("",""),("",""),("","")])
#查询语句 查询相关*每个方法都会导致游标移动
cur.fetchone() #抓取一条数据 抓取到数据返回元组 没有抓取到数据返回None
cur.fetchall() #抓取所有数据
cur.fetchmany() #抓取许多数据 抓到数据返回元组
"""
三 * * 查询fetch相关语句
1.导出数据库模块
2.python连接数据库
3.建立游标指针
4.执行查询
5.循环遍历里面的每条数据
6.提交数据
7.关闭游标
8.关闭连接
"""
import pymysql
import time
#查询语句消耗的时间结束时间减去开始时间
def addition():
#京东首页需要至少十几次的数据库连接 数据库连接只是需要消耗1.3秒 正规网页开始的速度<3秒
start=time.time()
conn=pymysql.connect(host="39.98.39.173",port=13306,user="root",passwd="root",db="杨成森",charset="utf8")
print(conn)
end=time.time()
print("消耗的时间*",end-start)
#redis缓存数据库操作每秒万次读,8万次写的速度!!!
cur=conn.cursor()#游标执行完之后没有返回值
sql=" select *from student where name='way' and id='8' "
cur.execute(sql)
#查询所有数据和条数
res=cur.fetchall() print("共有 %d 条数据" % len(res))
#获得相应数量的数据 fetch(数字) #取得前n条 返回的都是元组
result=cur.fetchmany(3)
print(result)
for i in result:
print(i)
#查询一条数据
while 1: result=cur.fetchone() if result is None: break print(result)
#游标里面是有数据的 执行完之后 查询返回的是结果集合
result=cur.fetchone()
#抓取一行数据
print(result)
conn.commit()
cur.close()
conn.close()
#必须关闭 减少浪费资源空间 防止conn用户量多的时候同时访问不安全
if __name__ =='__main__':
addition()