下载
pip3 install PyMySQL
前言
在此之前,请确保电脑中下载了MySQL数据库,并连接上了库。数据库中的表以及字段名那就随意了。如下:
连接配置
# 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database con = pymysql.connect(host='localhost', port=3306, user='root', passwd='An', database='an')#如果汉字显示不出来就加入charset=‘utf-8'
小例子
import pymysql # 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an')#如果汉字显示不出来就加入charset=‘utf-8' # h获取一个游标对象 cursor = con.cursor() # 执行一条SQL语句 cursor.execute("select version()") # 获取一行数据 data = cursor.fetchone() print(data) # 关闭数据库连接,记得关闭游标,后续可以不写 con.close() """ ('5.7.26-log',) """
生成游标是必须的,不然无法进行接下面的操作。
写入并查询数据
import pymysql # 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an')#如果汉字显示不出来就加入charset=‘utf-8' # h获取一个游标对象 cursor = con.cursor() # 执行一条插入SQL语句 sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); ' cursor.execute(sql) # 执行一条查询语句 sql1 = "select * from login_user;" cursor.execute(sql1) # 获取一行数据 data = cursor.fetchall() print(data) # 关闭数据库连接 con.close() """ (('admin', '123456'), ('qingan', '123456'), ('anan', '123456')) """
上述中的sql以及sql1其实就是数据库中的sql语句。 如数据被覆盖请跳至提交数据标题。
一次写入多条语句
sql = "INSERT INTO login_user(username,password) VALUES (%s,%s);" list_name = [('QA',123456),('shier',123456),('ershi',123456)] cur.executemany(sql,list_name)
获取数据
# 获取查询结果,获取一条数据 data=cur.fetchone() # 获取查询结果,获取全部数据,如果已经使用fetchone取了第一条的数据,游标会自动向下取值 data_ = cur.fetchall() # 下标获取查询结果,获取第一条数据,可以更改数字来获取值 data_1=cur.fetchmany(1)
在上述小例子中有用到此类的数据查询。
提交数据
import pymysql # 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an')#如果汉字显示不出来就加入charset=‘utf-8' # h获取一个游标对象 cursor = con.cursor() # 执行一条SQL语句 sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); ' cursor.execute(sql) # 提交数据库 con.commit() sql = "select * from login_user;" cursor.execute(sql) # 获取一行数据 data = cursor.fetchall() print(data) # 关闭数据库连接 con.close()
在上述过程中,提交数据后前面的数据会被覆盖掉,原因就是没有提交到数据库。
回滚
import pymysql # 数据库连接,主机host、端口port、用户名user、密码passwd、数据库表database con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an')#如果汉字显示不出来就加入charset=‘utf-8' # h获取一个游标对象 cursor = con.cursor() # 执行一条SQL语句 sql = 'INSERT INTO login_user(username,password) VALUE ("anan",123456); ' try: cursor.execute(sql) # 提交数据库 con.commit() except: # 发生错误时回滚 con.rollback() # 关闭数据库连接 con.close()
with
import pymysql con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an') with con: cur = con.cursor() cur.execute("select *from login_user;") data = cur.fetchall() print(data)
使用with语法python会自动释放资源
字典游标
import pymysql import pymysql.cursors con = pymysql.connect(host='localhost', port=3306, user='root', passwd='jiang', database='an',cursorclass=pymysql.cursors.DictCursor) with con: cur = con.cursor() cur.execute("select *from login_user;") data = cur.fetchall() for da in data: print(da['username'],da['password']) """ admin 123456 qingan 123456 shier 123456 anan 123456 """