常见数据库:mysql、oracle、sqlserver、mongodb、access
需要有数据库驱动来操作:
操作mysql数据库:db-api,pymysql
安装:pymsql库 第三方库
import pymysql
from pymysql.cursors import DictCursor
conn = pymysql.connect(host="",user="",password="",database="",port= ,charset=“utf8”,cursorclass=DictCursor)
cursorclass=DictCursor 读取的是元组类型,可读性不强,换成字典,导入这个就变成了字典,需要导入
cursor = conn.cursor() 相当于发起请求
cursor.execute(“SELECT * FROM 表 limit 2;”)
sql:尽量大写,容易出错
参数(query,args=None)(sql语句,条件如id=1)
传递参数的第一种方式:format --不要用,因为sql注入,写错会导致删库/删表
cursor.execute(“select * from member where mobile_phone={}”.format(mobile)) # 对于动态的mobile
传递参数的第二种方式:args参数:- 方式传递,用%s占坑符 --和python的%s不一样 args = tuple, list or dict
cursor.execute(“select * from member where mobile_phone=%s”,args=[mobile, ]) # 对于动态的mobile
多个参数
cursor.execute(“select * from member where mobile_phone=%s and id=%s”,args=[mobile, 1])
cursor.fetchone() # 一条数据 cursor.fetchall() # 全部数据
注意点:同一个游标,多次查询,会导致查询的数据不一样,可以通过新创建一个游标,类似文件操作中的光标
cursor_other = conn.cursor() cursor_other.fetchone() cusor_other.execute(“SELECT * FROM 表 limit 2;”)
cursor.close() # 游标关 conn.close() # 连接关
封装为类:
import pymysql class DbHandler: def __init__(self,host,user,password, database,port,charset, cursorclass=DictCursor,**kw): # 建立连接 conn = pymysql.connect(config=config,host=host, password=password,database=database, port=port,charset=charset, cursorclass=cursorclass,**kw) # 建立游标 cursor = conn.cursor() # 查询 - 提交事务 - 获取结果 - one/all def query(self,sql,args=None,one=True) # 执行 self.cursor.excute("sql语句", args) self.conn.commit() # 获取结果 if one: return self.cursor.fetchone() else: return self.cursor.fetchall() # 关闭 def close() self.cursor.close() self.conn.close()
作者:国民老公六哥
原文链接:https://blog.csdn.net/weixin_44941728/article/details/105422403