码迷,mamicode.com
首页 > 数据库 > 详细

python操作数据库

时间:2020-11-04 19:09:47      阅读:31      评论:0      收藏:0      [点我收藏+]

标签:passwd   元组   charset   nec   for   引入   支持   exec   ams   

python操作数据库流程
下载mysql驱动模块(pymysql)
引入模块
建连接(建立和数据库连接)
执行sql语句
  非查询:增加,删,修改
  查询:select
处理结果
释放资源
  关连接
  关游标

驱动介绍:
python操作mysql驱动/第三方模块: MySQLdb PyMysql
pymysql: 支持2.x 支持3.x
mysqldb: 只支持3.x

安装模块 pip install pymysql

增删改
SQL

增加

insert into 表名(列1,列2,....) values(值1,值2,...)

删除

delete from 表名 ; # 删除表中所有数据!
delete from 表名 where 条件;

修改

update 表名 set 列1=值1,列2=值2,....; #不加条件,修改所有列!~
update 表名 set 列1=值1,列2=值2,....where 条件;

select * from students where sex =‘男‘;
insert into students(name,sex,age,birthday,phone,addr)
values(‘刘帅‘,‘女‘,20,now(),‘17600950805‘,‘山西‘) ;
update students set sex=‘男‘ where name =‘刘帅‘
delete from students where name =‘刘晒‘

python实现非查询
  非查询:步骤一样
  区别:sql语句不同,参数个数不同
def my_execute(sql,params):
  ‘‘‘非查询通用功能! sql语句, 参数列表‘‘‘

2.连接

conn =
pymysql.connect(host=‘39.98.39.173‘,port=13306,user=‘root‘,passwd=‘root‘,db=‘1909C2‘,c
harset=‘utf8‘)
print(conn)

3. 获取游标

cur = conn.cursor()

4. 执行sql

num = cur.execute(sql,params)

print(f‘影响行数:{num}‘)

conn.commit() # 必须手动提交到数据库!

5. 释放资源

cur.close()
conn.close()

返回影响行数!

return num
if name == ‘main‘:

通用

sql =‘insert into students(name,sex,age,birthday,phone,addr)
values(%s,%s,%s,%s,%s,%s)‘
params=(‘王五‘,‘女‘,39,‘2020-11-03‘,‘17600950805‘,‘山西‘)
if my_execute(sql,params)>0:
  print(‘数据库操作成功!‘)
else:
  print(‘数据库操作失败!‘)

参数如何传递
sql =‘insert into students(name,sex,age,birthday,phone,addr)
values(%s,%s,%s,%s,%s,%s)‘

格式:一行数据就是一个元组!

params=(‘王五‘,‘女‘,39,‘2020-11-03‘,‘17600950805‘,‘山西‘)
num = cur.execute(sql,params)

批量执行非查询
sql =‘insert into students(name,sex,age,birthday,phone,addr)
values(%s,%s,%s,%s,%s,%s)‘

格式:一行数据就是一个元组!

params=[(‘王五1‘,‘女‘,39,‘2020-11-03‘,‘17600950805‘,‘山西‘),(‘王五2‘,‘女‘,39,‘2020-11-
03‘,‘17600950805‘,‘山西‘)]
num = cur.executemany(sql,params) # 结果大于1的

核心对象
连接对象: conn= pymysql.connect(host=‘IP地址‘,port=13306,user=‘用户名‘,passwd=‘密
码‘,db=‘数据库名‘,charset=‘utf)
  conn.close() #关闭
  cur= conn.cursor() 创建游标
游标 Cursor 操作数据库依靠游标! 
  num = cur.execute(sql,参数) 执行非查询,返回影响的行数!
  num=cur.executemangy(sql,[(),(),..]) 批量执行非查询,返回影响行数!
  cur.close()
  cur.fetchone() 抓取1条,,返回元组或None
  cur.fetchall() 抓取所有
  cur.fetchmany(大小) 指定抓取大小
  cur.next() 游标下移!

查询
import pymysql
def get_one():

1. 连接

conn = pymysql.connect(host=‘39.98.39.173‘, port=13306, user=‘root‘,
passwd=‘root‘, db=‘1909C2‘, charset=‘utf8‘)

2. 打开游标

cur = conn.cursor()

3. 执行

sql =‘select * from students where sex = %s‘
cur.execute(sql,(‘女‘))

result = cur.fetchone() # 返回一个元组() 默认找第1个!

result = cur.fetchall() # 返回多个元祖 ((),(),(),...)
print(result)
for stu in result:
print(f‘id:{stu[0]},名字:{stu[1]}‘)

4.关闭资源

cur.close()
conn.close()
if name == ‘main‘:
get_one()

python操作数据库

标签:passwd   元组   charset   nec   for   引入   支持   exec   ams   

原文地址:https://www.cnblogs.com/-luo/p/13925562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!