亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:迭代字符串列表并將它們與類對象關聯

Python:迭代字符串列表并將它們與類對象關聯

海綿寶寶撒 2023-06-27 18:25:12
我創建了一個名為 Tables 的類,它具有name、ddl和cols屬性,我用它們在 MySQL 中創建表。我有一個名為 的所有 Table 對象的列表mylist。我有一個名為 的所有表對象名稱的列表tables。我有一個 csv 的剝離文件名列表,我將使用它來將數據加載到名為 的表中list_files。如果in 中的項目與list_filesTable 對象的 in 匹配,我想將 Table 對象中列出的列中的數據插入到關聯的 MySQL 表中 - 換句話說,我想使用列表項作為具有匹配名稱的 Table 對象。namemylistcols一旦弄清楚如何使用字符串list_files作為現有 Table 對象的名稱,我就可以構建 INSERT 語句。到目前為止,這是我的代碼:from pathlib import Pathmylist = []class Table:    table_list = mylist    def __init__(self, name, ddl):        self.name = name        self.ddl = ddl        self.cols = []        self.skip_id = False  # indicates whether to skip the AUTO_INCREMENT '_id'        # column on import/update    def add_to_list(self, table_list):        table_list.append(self)    def add_cols(self):        text = self.ddl.split('`')        self.cols = text[3::2]    def skip_auto_inc_id(self):        if 'AUTO_INCREMENT' in self.ddl:            self.skip_id = True# 2 example Table objectssub_leagues = Table('sub_leagues', '''CREATE TABLE IF NOT EXISTS `sub_leagues` (  `subl_id` INT PRIMARY KEY,  `league_id` INT,  `sub_league_id` INT,  `name` VARCHAR(50),  )   ENGINE=InnoDB DEFAULT CHARSET=latin1''')sub_leagues.add_to_list(mylist)divisions = Table('divisions', '''CREATE TABLE IF NOT EXISTS `divisions` (  `d_id` INT AUTO_INCREMENT PRIMARY KEY,  `league_id` INT,  `sub_league_id` INT,  `division_id` INT,  `name` VARCHAR(50),  `gender` INT  )   ENGINE=InnoDB DEFAULT CHARSET=latin1''')divisions.add_to_list(mylist)tables = []for table in mylist:    table.add_cols()    table.skip_auto_inc_id()    if table.skip_id:        table.cols = table.cols[1:]    tables.append(table.name)files = ['sub_leagues.csv', 'divisions.csv']list_files = []for file in files:    filename = Path(file).stem    list_files.append(filename)#  This is where I'm stumpedfor filename in list_files:    if filename in tables:        print(filename.cols)這顯然不起作用,但我想將其視為filename具有相同名稱的 Table 對象,并且不確定正確的方法。
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

您可以創建一個字典將文件名映射到 Table 對象:


tables = {}

for table in mylist:

    table.add_cols()

    table.skip_auto_inc_id()

    if table.skip_id:

        table.cols = table.cols[1:]

    tables[table.name] = table


for filename in list_files:

    if filename in tables:

        table = tables[filename]


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號