python连接上数据库,进行非原生操作
数据库简单的增删改查可见我前面的随笔
1 import pymysql 2 conn = pymysql.connect( # 建立连接 3 host='localhost', #地址 4 port=3306, #端口(未修改默认就是3306) 5 user='xxxxx', # 用户 6 password='xxxxx', # 用户密码 7 db='spiders', # 需操作的库名 8 charset='utf8' # 编码,不能写成'utf-8' 9 ) 10 cur = conn.cursor() # 建立游标 11 cur.execute('show tables') # 转换为数据库可读的函数(查看所有的表) 12 data = cur.fetchall() # 获取操作结果fetchone()表示获取一条结果 13 print(data) # 输出结果(结果是一个元组,可用拆包工具‘*’拆包)
查比较简单,增删改操作涉及数据库的事务,python下的增删改解释器会自动创建一个事务,对于所有的增删改操作
都要进行提交(commit).类似于转账是的确认操作,没有提交,钱是不会转移的
sql = '''create table if not exists class( #sql语句:创建一个名为class的表格 id int primary key auto_increment, # 主键id,自增长约束 name varchar(20) not null # name 非空约束 ) ''' cur.execute(sql) # 将整句sql语句放入,注意此时数据库并没有生成这张表格,因为还未提交 sql1 = "insert into class values(3,'wjh'),(4,'zy')" # sql语句 插入数据 try: # 异常处理 cur.execute(sql1) conn.commit() # 增删改操作都要向mysql表示提交操作 except: # 如果操作出错,进行回滚操作 cur.execute('rollback') # 撤销 a = cur.execute('show tables') b = cur.fetchall() # 获取上一条操作的结果 print('表数量:', a) print('表名:', *b) cur.execute('select * from class') # 查看student表的全部内容 c = cur.fetchall() print('class内容:', *c) cur.close() # 关闭游标 conn.close() # 关闭连接