标签:悠久之翼 mys 关闭数据库 etc name local 就是 rom 这一
import pymysql # 如何使用pymysql连接MySQL # 创建数据库连接 db = pymysql.connect(host="localhost", user="root", password="zgghyys123", db="satori", port=3306) # 调用cursor方法获取游标,下面我们主要来操作这个cursor方法 cursor = db.cursor() # 使用execute方法执行查询 cursor.execute("select version()") # 然后再调用fetchone | fetchall方法获取单条 | 多条数据 data = cursor.fetchone() print(f"Database version: {data}") # Database version: (‘5.7.17-log‘,) # 别忘了最后关闭数据库连接 cursor.close() db.close()
import pymysql db = pymysql.connect(host="localhost", user="root", password="zgghyys123", db="satori", port=3306) cursor = db.cursor() # 创建一张表 # pymysql很简单,就像直接操作数据库一样,写好你的sql语句,然后直接cursor.execute(sql),就自动执行了 sql = ‘‘‘CREATE TABLE GIRLS( NAME CHAR(40) NOT NULL, AGE INT, GENDER CHAR(1), LENGTH INT, ANIME CHAR(40) )‘‘‘ # 然后表便创建成功了 cursor.execute(sql) # 查询已存在的表 cursor.execute("show tables") data = cursor.fetchall() print(data) # ((‘girls‘,),) # 数据库里面就一张刚创建的girls表 # 关闭连接 cursor.close() db.close()
import pymysql from pprint import pprint db = pymysql.connect(host="localhost", user="root", password="zgghyys123", db="satori", port=3306) cursor = db.cursor() # sql插入语句,往数据库里面插入几条记录 sql = ‘‘‘INSERT INTO GIRLS(NAME, AGE, GENDER, LENGTH, ANIME) VALUES (‘古明地觉‘, 17, ‘f‘, 155, ‘东方地灵殿‘), (‘古明地恋‘, 16, ‘f‘, 155, ‘东方地灵殿‘), (‘椎名真白‘, 16, ‘f‘, 160, ‘樱花庄的宠物女‘), (‘四方茉莉‘, 400, ‘f‘, 159, ‘sola‘), (‘雨宫优子‘, 16, ‘f‘, 157, ‘悠久之翼‘)‘‘‘ cursor.execute(sql) # 然后我们再获取数据 sql = "select * from girls" cursor.execute(sql) data = cursor.fetchall() pprint(data) ‘‘‘ ((‘古明地觉‘, 17, ‘f‘, 155, ‘东方地灵殿‘), (‘古明地恋‘, 16, ‘f‘, 155, ‘东方地灵殿‘), (‘椎名真白‘, 16, ‘f‘, 160, ‘樱花庄的宠物女‘), (‘四方茉莉‘, 400, ‘f‘, 159, ‘sola‘), (‘雨宫优子‘, 16, ‘f‘, 157, ‘悠久之翼‘)) ‘‘‘ # 可以看到数据全部打印出来了,但是我们来看看数据库
try: cursor.execute(sql) # 一定要有这一步 db.commit() # 将之前所做的操作提交上去 except: # 发生错误时回滚,回滚当前游标的所有操作,回滚到最初的状态 # commit是提交游标的所有操作,rollback是回滚游标的所有操作。每一个方法都开启了一个事务 ‘‘‘ 什么是事务?以及为什么要有回滚。 事务:多个操作看成是一个操作,只能全部成功才会成功,要么都成功,要么都不成功。 这样做的好处是什么?试想一下我们银行转钱,如果古明地觉给她妹妹转了一百万日元。 相当于古明地觉的账户里应该少一百万,她妹妹的账户里应该多一百万,这两个操作应该看做一个整体。 但如果古明地觉转了一百万之后,系统出现了问题。古明地觉的账户里少了一百万,但她妹妹的账户却没有多出一百万,等于发生了故障。 要么都成功,要么都不成功,所以这时候应该回到最初的状态。 而回滚就相当于滚到古明地觉没有转钱时候的状态,应该把一百万退回到古明地觉的账户里。 所以这就是为什么要有回滚 ‘‘‘ db.rollback() cursor.close() db.close()
import pymysql from pprint import pprint db = pymysql.connect(host="localhost", user="root", password="zgghyys123", db="satori", port=3306) cursor = db.cursor() sql = "select * from girls" cursor.execute(sql) # fetchone,获取一条数据 data1 = cursor.fetchone() print(data1) # (‘古明地觉‘, 17, ‘f‘, 155, ‘东方地灵殿‘)
# fetchall,获取所有数据 data2 = cursor.fetchall() pprint(data2) ‘‘‘ ((‘古明地觉‘, 17, ‘f‘, 155, ‘东方地灵殿‘), (‘古明地恋‘, 16, ‘f‘, 155, ‘东方地灵殿‘), (‘椎名真白‘, 16, ‘f‘, 160, ‘樱花庄的宠物女‘), (‘四方茉莉‘, 400, ‘f‘, 159, ‘sola‘), (‘雨宫优子‘, 16, ‘f‘, 157, ‘悠久之翼‘)) ‘‘‘ # 这里也可以使用for循环,并通过切片的方式获取部分值 for row in data2: name = row[0] age = row[1] gender = row[2] length = row[3] anime = row[4] print(name, age, gender, length, anime) ‘‘‘ 古明地觉 17 f 155 东方地灵殿 古明地恋 16 f 155 东方地灵殿 椎名真白 16 f 160 樱花庄的宠物女 四方茉莉 400 f 159 sola 雨宫优子 16 f 157 悠久之翼 ‘‘‘
# 有的时候记录很多,不可能全部获取,只想获取一部分,虽然能通过for循环加切片的方式,但是数据还是全部取出来了 # 这里可以使用fetchmany,获取部分数据 data3 = cursor.fetchmany(3) # 获取3条 pprint(data3) ‘‘‘ ((‘古明地觉‘, 17, ‘f‘, 155, ‘东方地灵殿‘), (‘古明地恋‘, 16, ‘f‘, 155, ‘东方地灵殿‘), (‘椎名真白‘, 16, ‘f‘, 160, ‘樱花庄的宠物女‘)) ‘‘‘
标签:悠久之翼 mys 关闭数据库 etc name local 就是 rom 这一
原文地址:https://www.cnblogs.com/traditional/p/9821273.html