日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python實(shí)現(xiàn)將元組中的元素作為參數(shù)傳入函數(shù)的操作

瀏覽:27日期:2022-07-22 15:54:06

本文由Markdown語法編輯器編輯完成。

1. 需求:

現(xiàn)在有一個(gè)Python的需求需要實(shí)現(xiàn):

就是實(shí)現(xiàn)連接一次數(shù)據(jù)庫,就能夠執(zhí)行多條SQL語句,而且這個(gè)SQL語句是需要通過調(diào)用者將每一次執(zhí)行的參數(shù)傳入進(jìn)來,組合成一條完整的SQL語句再去執(zhí)行。

經(jīng)過初步研究,傳入?yún)?shù)時(shí),通過數(shù)組的形式,數(shù)組中的每一個(gè)元素則是一個(gè)元組tuple(因?yàn)镾QL中需要填入的參數(shù)可能是多個(gè),所以需要通過元組的形式傳入)。

比如SQL語句的形式為:

basic_sql = ‘SELECT * FROM series se where se.body_part like “%{}%” and se.modality = “{}”’

在這條SQL中,有兩個(gè)變量需要傳入,分別用{}表示,一個(gè)是序列的body_part, 一個(gè)是序列的modality。準(zhǔn)備傳入的參數(shù)為:

[(‘Chest’, ‘CT’), (‘Lung’, ‘MRI’), (‘Leg’, ‘DR’)]等。

希望通過以下的格式化函數(shù),將參數(shù)傳入:

SELECT * FROM series se where se.body_part like “%{}%” and se.modality = “{}”.format(param1, param2) 這樣。

2. 函數(shù)實(shí)現(xiàn):

雖然看起來這個(gè)需求非常明確,也比較簡單。但是實(shí)現(xiàn)起來,還是花費(fèi)了我好長的時(shí)間。究其原因,主要的困惑就是如何能夠?qū)⑦@個(gè)參數(shù)傳入到SQL中,并且去執(zhí)行SQL。

2.1 思路一:

在基于需求中提到的那個(gè)解決思路,我希望是拼接字符串,將拼接后的整個(gè)字符串作為完整的SQL語句,然后執(zhí)行生成結(jié)果。

def execute_multi_sql(self, sql, params_list): result_list = [] try: self._db_connection = self._db_connection_pool.connection() self._db_cursor = self._db_connection.cursor() for params in params_list: combined_sql = [] combined_sql.append(sql) combined_sql.append(’.format(’) combined_sql.append(’,’.join(map(str, params))) combined_sql.append(’)’) combined_sql = ’’.join(combined_sql) logger.debug('executing sql: %s' % combined_sql) self._db_cursor.execute(combined_sql) result = self._db_cursor.fetchall() logger.debug(u'SQL語句已經(jīng)被執(zhí)行, 結(jié)果是:n %s' % str(result)) result_list.append(result) except Exception as e: logger.exception(u'執(zhí)行sql語句時(shí),發(fā)生了錯(cuò)誤: %s', e.message) raise finally: self._db_connection.close() return result_list

但是在執(zhí)行這個(gè)函數(shù)的時(shí)候,會(huì)報(bào)異常,異常說明是:tuple out of bounds.

以下是問題產(chǎn)生的原因:

2.2 思路二:

通過google搜索,最終找到的解決方案是如下鏈接所示:

expanding tuples into arguments.

https://stackoverflow.com/questions/1993727/expanding-tuples-into-arguments

from DBUtils.PooledDB import PooledDBimport logging...... def execute_multi(self, sql, params_list): if not isinstance(params_list, list): raise Exception(u’傳入?yún)?shù)要求是列表類型,請檢查傳入?yún)?shù)類型!’) result_list = [] try: self._db_connection = self._db_connection_pool.connection() self._db_cursor = self._db_connection.cursor() for params in params_list: # 將每一個(gè)元組中存的參數(shù)傳入format中,替換sql中的變量值. # 如果數(shù)組中的元素不是元組,則sql中只有一個(gè)變量需要替換,將參數(shù)直接替換. if isinstance(params, tuple): combined_sql = sql.format(*params) else: combined_sql = sql.format(params) logger.debug('executing sql: %s' % combined_sql) self._db_cursor.execute(combined_sql) result = self._db_cursor.fetchall() logger.debug(u'SQL語句已經(jīng)被執(zhí)行, 結(jié)果是:n %s' % str(result)) if len(result) > 0: result_list.append(result) except Exception as e: logger.exception(u'執(zhí)行sql語句時(shí),發(fā)生了錯(cuò)誤: %s', e.message) raise finally: self._db_connection.close() return result_list

這段代碼中,最主要的修改就是關(guān)于處理參數(shù)的部分. 由于傳入的參數(shù)是一個(gè)數(shù)組,數(shù)組中的每一個(gè)元素是一個(gè)tuple, tuple內(nèi)的元素個(gè)數(shù)是由第2個(gè)參數(shù)sql中需要傳入的參數(shù)個(gè)數(shù)對(duì)應(yīng)的。

如上述需求中提到的,傳入的sql中需要補(bǔ)充兩個(gè)參數(shù)值,分別是body_part和modality, 因此數(shù)組中每一個(gè)tuple的長度也是2.

這樣通過*tuple的方式,可以依次取出tuple中的每一個(gè)元素作為變量,傳入前面的sql語句中,組成一個(gè)完整的sql語句。

然后再調(diào)用db.execute, 便可以獲取到查詢結(jié)果.

補(bǔ)充知識(shí):Python——利用元組作為函數(shù)返回值:輸出最值和個(gè)數(shù)

廢話不多說,看代碼!

# 利用元組作為函數(shù)返回值:輸出最值和個(gè)數(shù)def yuanzu(*xxx): i = max(xxx) j = min(xxx) print('最大值是%s' % i) print('最小值是%s' % j) l = len(xxx) print('長度是{0}'.format(l))yuanzu(1,2,5,6,5)

以上這篇Python實(shí)現(xiàn)將元組中的元素作為參數(shù)傳入函數(shù)的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
2023国产精品久久久精品双| 国产精品nxnn| 日韩精品不卡一区二区| 欧美一级二级视频| 午夜免费一区| 久久99免费视频| 日韩高清不卡在线| 91国内精品| 日韩欧美另类中文字幕| 伊人久久大香线蕉av超碰演员| 日韩一区二区在线免费| 欧美成人精品一级| 久久成人高清| 国产欧美日韩免费观看| 91久久精品无嫩草影院| 蜜桃成人av| 国产高清一区| 精品亚洲美女网站| 亚洲精品一区二区妖精| 久久亚洲精品中文字幕蜜潮电影| 久久久久久色| 国产精品调教| 裤袜国产欧美精品一区| 亚洲www啪成人一区二区| 国产农村妇女精品一区二区| 亚洲色图国产| 国产一区丝袜| 欧美日韩第一| 97国产成人高清在线观看| 国产aⅴ精品一区二区四区| 国产精品**亚洲精品| 中文在线资源| 99tv成人| 亚洲人www| 国产精品麻豆久久| 美女网站一区| 九九色在线视频| 亚洲精品三级| 中文字幕色婷婷在线视频 | 欧美日韩99| 成人看片网站| 国产精品久久久久久模特| 性欧美69xoxoxoxo| 国产精品一区三区在线观看| 蜜桃av.网站在线观看| 日韩精品一区二区三区免费视频| 91成人在线精品视频| 久久久天天操| 国产精品chinese| 久久夜夜操妹子| 免费在线成人网| 欧美综合另类| 亚洲最新无码中文字幕久久| 欧美日韩亚洲一区在线观看| 日韩高清不卡| 精品国产免费人成网站| 久久国产麻豆精品| 午夜久久av| 亚洲综合在线电影| 色婷婷综合网| 国产经典一区| 欧美激情一区| 婷婷成人av| 日韩精品一二三四| 欧美国产91| 亚洲精品a级片| 日韩精品高清不卡| 一区二区国产在线观看| 一区在线视频观看| 久久高清精品| 国产aⅴ精品一区二区四区| 国产精品v一区二区三区| 97久久亚洲| 国产欧美高清视频在线| 蜜桃视频在线观看一区| 亚洲三级视频| 国产日韩欧美中文在线| 国产午夜精品一区在线观看| 男女激情视频一区| 国产午夜精品一区二区三区欧美| 免费黄色成人| 中文一区二区| 欧美特黄一区| 日本午夜精品| 国产精品不卡| 欧美va亚洲va日韩∨a综合色| 91视频久久| 国产日韩专区| 欧美视频一区| 精品亚洲美女网站| 日本午夜精品一区二区三区电影| 蜜桃久久久久| 视频一区中文| 国产日韩高清一区二区三区在线| 久久麻豆视频| av在线日韩| 日本久久一区| 久久久天天操| 欧美日韩午夜电影网| 免费在线亚洲| 午夜一区在线| 精品久久影院| 免费久久99精品国产自在现线| 日韩在线卡一卡二| 精品视频在线一区二区在线| 久久视频国产| 麻豆91小视频| 日韩欧乱色一区二区三区在线| 丰满少妇一区| 91久久久精品国产| 国产一区二区亚洲| 日本va欧美va精品| 日韩精品dvd| 久久xxx视频| 日本视频在线一区| 日韩一区精品视频| 日韩 欧美一区二区三区| 久久久久欧美精品| 精品国产亚洲一区二区三区在线 | 国产日韩欧美一区在线| 欧美特黄一级大片| 日韩免费看片| 久久字幕精品一区| 亚洲香蕉久久| 欧美中文日韩| 91久久久久| 不卡在线一区二区| 麻豆网站免费在线观看| 精品国产不卡一区二区| 国产日产高清欧美一区二区三区 | 久久精品欧洲| 日韩精品一区二区三区中文在线| 99国产精品视频免费观看一公开| 98精品久久久久久久| 久久精品日韩欧美| 国产激情久久| 国产精品免费不| 麻豆精品在线视频| 麻豆精品视频在线观看免费| 欧美综合社区国产| 美女国产一区二区三区| 精品一区视频| 国产日韩中文在线中文字幕| 国产欧美成人| 久久亚洲黄色| 欧美日韩国产观看视频| 国产精品亚洲成在人线| 国产极品一区| 精品丝袜在线| 亚洲精品乱码| 国产欧美日韩在线一区二区| 青青青国产精品| 久久久免费人体| 亚洲第一精品影视| 日本成人在线不卡视频| 国产成人精品亚洲线观看| 91视频精品| 中文字幕亚洲精品乱码| 高潮久久久久久久久久久久久久| 99精品视频在线观看免费播放| 999精品色在线播放| 偷拍欧美精品| 日韩福利视频一区| 日本不卡免费高清视频在线| 亚洲精品中文字幕乱码| 国产欧美视频在线| 婷婷六月综合| 久久精品国产亚洲一区二区三区| 在线成人直播| 免费视频最近日韩| 国产一区国产二区国产三区| 丝袜国产日韩另类美女| 国产一区调教| 综合色就爱涩涩涩综合婷婷| 麻豆国产精品| 18国产精品| av亚洲免费| 国产理论在线| 久久wwww| 午夜在线一区| 亚洲www啪成人一区二区| 久久中文字幕一区二区三区| 亚州欧美在线| 99精品国产一区二区三区| 鲁大师精品99久久久| 日本一区福利在线| 免费人成网站在线观看欧美高清| 久久久精品五月天| 欧美天堂一区| 中文一区一区三区免费在线观| 精品国产一区二| 日韩精品91亚洲二区在线观看| 激情久久婷婷| 欧美日韩水蜜桃| 四虎国产精品免费观看| 国产欧美88| 国产伦一区二区三区| 久久国产三级精品| 国产精品一区三区在线观看| 日本在线不卡视频一二三区|