python安装pymysql 模块
1、用pip安装:
pip3 insatll pymysql
2、代码导入和连接
import pymysql
#链接
conn=pymysql.connect(
host='localhost',
user='root',
password='123',
database='xiaoming',
charset='utf8',
autocommit=True)
#游标
cursor=conn.cursor() #执行完毕返回的结果集默认以元组(可迭代对象即可)显示
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) # 以字典的方式显示数据 个人推荐使用
3、操作数据库
#执行sql语句
user = input(">>>:").strip()
pwd = input(">>>:").strip()
sql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引号
这里有一个大坑,自己手动拼接会导致sql注入的问题,我会再用一篇文章描述这个问题
rows=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
# 获取真实数据
cursor.fetchone(),cursor.fetchall(),cursor.fetchmany(),类似管道取值,获取一条,所有,多条
#增
sql="insert into user(username,passwo) values(%s,%s)"
rows = cursor.execute(sql,('bob','123'))
#改
sql = "update user set username='bob' where id=1"
rows = cursor.execute(sql)
注意:增和改 只执行excute 并不会真正影响到数据,需要再执行conn.commit()才可以完成真正的增改,为防止遗忘,我门将提交commit提前添加到连接部分conn=pymysql.connect(autocommit=True)
#一次插入多行记录
res = cursor.executemany(sql,[(),(),()])
#游标的移动(scroll)只能在select之后使用
cursor.scroll(1,'relative') # 相对移动
cursor.scroll(3,'absolute') # 绝对移动
cursor.close()
conn.close()
4、注意一点sql的执行返回值是什么
这两者看似不一样,其实返回值都是一样的,res表示的意思是执行sql指令后受影响的表的行数,即图中标记的部分