日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2023/12/2 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库,一次性执行多条语句不执行... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

總結(jié):1、使用這種方法,獲取到的返回值總是最后一條命令的返回值,如果最后一條命令是update或者delete這種sql,則返回為()

2、sql的每一條語句后面都需要添加一個(gè)分號(hào),不然最后splice時(shí)候 ,會(huì)少一條語句

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

"""

@author:yaren_zhou

@file: DButils.py

@time: 2019/12/06 14:56

@contact: 1601704037@qq.com

@software: PyCharm

"""

import pymysql

import logging

logger = logging.getLogger(__name__) #操作日志對(duì)象

class MysqlConn():

'''

數(shù)據(jù)庫連接的公共類,提供連接數(shù)據(jù)庫,查詢,刪除語句等操作

'''

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("數(shù)據(jù)庫連接失敗!")

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

logger.error("數(shù)據(jù)庫連接失敗!")

raise

logger.info(f"數(shù)據(jù)庫連接成功")

self.currentConn = conn # 數(shù)據(jù)庫連接完成

self.cursor = self.currentConn.cursor() # 游標(biāo),用來執(zhí)行數(shù)據(jù)庫

# 把多條sql拆分成單條,放進(jìn)sqllist里面

def spliteSql(self,sql):

sqllist = sql.split(';')

return sqllist[0:-1]

#最后面會(huì)多一條空值

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

'''執(zhí)行sql,支持執(zhí)行多條sql語句。'''

self.open()

sqllist = self.spliteSql(sql) #先處理傳入的sql語句

logger.info(f"開始執(zhí)行sql語句")

with self.cursor as my_cursor:

for i in sqllist:

my_cursor.execute(i) #執(zhí)行sql語句

self.resultlist = my_cursor.fetchall() #獲取數(shù)據(jù)

self.currentConn.commit() #提交

if self.currentConn:

self.close()

return self.resultlist

# def execProc(self):

def close(self): #關(guān)閉連接

logger.info(f"關(guān)閉數(shù)據(jù)庫連接")

if self.cursor:

self.cursor.close()

self.currentConn.close()

總結(jié)

以上是生活随笔為你收集整理的python调用mysql数据库sql语句过长有问题吗_python操作mysql数据库,一次性执行多条语句不执行...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。