第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库 一次性执行多条语句不执行...

python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库 一次性执行多条语句不执行...

时间:2019-02-15 03:13:58

相关推荐

python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库 一次性执行多条语句不执行...

总结:1、使用这种方法,获取到的返回值总是最后一条命令的返回值,如果最后一条命令是update或者delete这种sql,则返回为()

2、sql的每一条语句后面都需要添加一个分号,不然最后splice时候 ,会少一条语句

#-*- coding:utf-8 -*-

"""

@author:yaren_zhou

@file: DButils.py

@time: /12/06 14:56

@contact: 1601704037@

@software: PyCharm

"""

import pymysql

import logging

logger = logging.getLogger(__name__) #操作日志对象

class MysqlConn():

'''

数据库连接的公共类,提供连接数据库,查询,删除语句等操作

'''

def __init__(self,dbName = None):

self.currentConn = None

self.host = "your host"

self.user = "username"

self.password = "password"

self.dbName = dbName

self.charset = "utf8mb4"

self.resultlist = []

def open(self):

try:

conn = pymysql.connect(

host = self.host,

user = self.user,

password = self.password,

db = self.dbName,

charset=self.charset,

)

except pymysql.err.OperationalError as e:

logger.exception("数据库连接失败!")

if "Errno 10060" in str(e) or "" in str(e):

logger.error("数据库连接失败!")

raise

logger.info(f"数据库连接成功")

self.currentConn = conn # 数据库连接完成

self.cursor = self.currentConn.cursor() # 游标,用来执行数据库

# 把多条sql拆分成单条,放进sqllist里面

def spliteSql(self,sql):

sqllist = sql.split(';')

return sqllist[0:-1]

#最后面会多一条空值

def execSql(self,sql:str,closeConn = True) -> list:

'''执行sql,支持执行多条sql语句。'''

self.open()

sqllist = self.spliteSql(sql) #先处理传入的sql语句

logger.info(f"开始执行sql语句")

with self.cursor as my_cursor:

for i in sqllist:

my_cursor.execute(i) #执行sql语句

self.resultlist = my_cursor.fetchall() #获取数据

mit() #提交

if self.currentConn:

self.close()

return self.resultlist

# def execProc(self):

def close(self): #关闭连接

logger.info(f"关闭数据库连接")

if self.cursor:

self.cursor.close()

self.currentConn.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。