天下程序员首页cx06.com
管理 |  登录 |  注册
袁鹏飞的小屋
笔记(共39个) > python

python orm对mysql数据库的增删改查(熬夜写的)

阅读 0赞 0回复 2024-07-31 18:10:51

python操作数据库的增删改查

import mysql.connector
class mysql_conn:
  def __init__(self,table='') -> None:
    self.pre='**'
    self.db="**"
    self.conn = mysql.connector.connect(
    host="**5",
    user="**",
    passwd="**",
    database=self.db
    )
    # 创建游标对象
    self.cur = self.conn.cursor(dictionary=True)
    self.table_con=' '+self.pre+table
    self.field_con='*'
    self.limit_con=self.where_con=self.order_con=''
  # 切换数据表
  def table(self,con):
    self.table_con=' '+self.pre+con
    return self
  def columns(self):
    sql='show COLUMNS FROM '+self.table_con
    query=self.query_fetchall(sql)
    fields=[]
    for i in query:
      tmp={}
      type=i['Type']
      if type.find('int')!=-1 or type.find('double')!=-1 or type.find('float')!=-1 or type.find('decimal')!=-1:
        tmp['type']='int'
      else:
        tmp['type']='str'
      tmp['name']=i['Field']
      fields.append(tmp)
    return fields
  # 字段
  def field(self,con):
    self.field_con=str(con)
    return self
  # 参数
  def where(self,con):
    self.where_con=' where '+str(con)  if con else self.where_con
    return self
  # 排序
  def order(self,con):
    self.order_con=' '+con if con else self.order_con
    return self
  # 限制个数
  def limit(self,con):
    self.limit_con=' limit '+str(con) if con else self.limit_con
    return self
  # 增加
  def add(self,con):
    sql,val=self.sql_zuhe_add(con)
    sql="insert into "+self.table_con+sql
    return self.add_one(sql,val)
  # 修改
  def update(self,con):
    sql0,val=self.sql_zuhe_update(con)
    sql="update "+self.table_con+" set "+sql0+' '+self.where_con
    return self.update_one(sql,val)
  # 查找
  def find(self,con=''):
    self.where_con=' where id='+str(con) if con else self.where_con
    sql="select "+self.field_con+" from" + self.table_con+self.where_con+self.order_con+' limit 1'
    # return sql
    return self.query_one(sql)
  # 统计个数
  def count(self):
    sql="select count("+self.field_con+") from" + self.table_con+self.where_con+self.order_con
    count=self.query_fetchall(sql)
    return count
  # 查找多个  
  def select(self):
    sql="select "+self.field_con+" from" + self.table_con+self.where_con+self.order_con+self.limit_con
    return self.query_fetchall(sql)
  # 删除
  def delete(self):
    sql="delete from" + self.table_con+self.where_con+self.order_con+self.limit_con
    query=self.query_execute(sql)
    return query
  # add update用的sql
  def sql_zuhe_add(self,con):
    columns=self.columns()
    if not con.get('id'):
      del columns[0]
    index=''
    vals=''
    tmp_list=[]
    count=0
    for key in columns:
      if con.get(key['name']):
        va=con.get(key['name'])
      else:
        if key['type']=='int':
          va=0
        else:
          va=''
      tmp_list.append(va)
      if(count==0):
        vals='%s'
        index=key['name']
      else:
        index+=','+key['name']
        vals+=','+'%s'
      count=count+1
    sql="("+index+")value("+vals+")"
    tmp_tuple=tuple(tmp_list)
    return sql,tmp_tuple
  
  def sql_zuhe_update(self,con):
    columns=self.columns()
    if not con.get('id'):
      del columns[0]
    index=''
    tmp_list=[]
    count=0
    for key in columns:
      if key['name'] not in con:
        continue
      if con.get(key['name']):
        va=con.get(key['name'])
      else:
        if key['type']=='int':
          va=0
        else:
          va=''
      # va =str(va)
      tmp_list.append(va)
      if(count==0):
        index=key['name']+'='+'%s'
      else:
        index+=','+key['name']+'='+'%s'
      count=count+1
    sql=index
    tmp_tuple=tuple(tmp_list)
    return sql,tmp_tuple
  def query(self,sql,params=''):
    self.cur.execute(sql,params)
  def add_one(self,sql,params=''):
    self.query(sql,params)
    self.conn.commit()
    lastrowid=self.cur.lastrowid
    return lastrowid
  def update_one(self,sql,params=''):
    self.query(sql,params)
    return self.conn.commit()
  def query_fetchall(self,sql,params=''):
    self.query(sql,params)
    all=self.cur.fetchall()
    return all
  def query_one(self,sql,params=''):
    self.query(sql,params)
    one=self.cur.fetchone()
    return one

赞(0)

文章作者置顶的回复

全部回复列表 当前第(1)页

添加回复,文明发言,会审核.(服务区回复可以发广告)

作者最新笔记
天下程序员 www.cx06.com 程序员的网上家园!
作者微信:13126507001