mysql獲取某個表的所有屬性名及其數據


MYSQL類實現從數據庫相應的表中獲取所有屬性及其數據,數據為元組類型。返回結果存放在字典中

 1 import pymysql
 2 
 3 
 4 class MYSQL:
 5     def __init__(self):
 6         pass
 7 
 8     def __del__(self):
 9         self._cursor.close()
10         self._connect.close()
11 
12     def connectDB(self):
13         """
14         連接數據庫
15         :return:
16         """
17         try:
18             self._connect = pymysql.Connect(
19                 host='localhost',
20                 port=3306,
21                 user='root',
22                 passwd='123456',
23                 db='test',
24                 charset='utf8'
25             )
26 
27             return 1
28         except:
29             return 0
30 
31     def readObject(self, target):
32         """
33         讀取評價對象
34         :return: list對象:所有的評價對象及其數據,數據的行數
35         """
36         self._cursor=self._connect.cursor()
37         result = {}  # {字段:該字段的所有值列表(包含字段)}
38         name = []    # target表的所有字段的列表
39         data = ()
40         sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s'"
41         name_sql = "select %s from %s"
42         self._cursor.execute(sql % target)
43         results = self._cursor.fetchall()
44         for row in results:
45             name.append(row[0])
46 
47         # print(name)
48 
49         for i in name:
50             self._cursor.execute(name_sql % (i, target))
51             data = self._cursor.fetchall()
52             # Python 字典 setdefault() 函數
53             # 如果字典中包含有給定鍵,則返回該鍵對應的值,否則返回為該鍵設置的值
54             result.setdefault(i, data)
55 
56         return result, len(data)
57 
58 
59 if __name__ == '__main__':
60 
61     mysql = MYSQL()
62     flag = mysql.connectDB()
63     if flag == 0:
64         print('數據庫連接失敗')
65     else:
66         print('數據庫連接成功')
67         data, row_count = mysql.readObject('employee')
68         print(data)
69         print(row_count)

 

輸出結果:

數據庫連接成功
{'FIRST_NAME': (('Mac',), ('Marry',), ('Bob',)), 'LAST_NAME': (('Mohan',), ('Mohan',), ('Mohan',)), 'AGE': ((20,), (32,), (21,)), 'SEX': (('M',), ('M',), ('F',)), 'INCOME': ((2000.0,), (3000.0,), (4000.0,))}
3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM