pylhb 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pylhb/myconfig.py ADDED
@@ -0,0 +1,37 @@
1
+ """
2
+ 模块:myconfig
3
+ 作者:李生
4
+ """
5
+ import configparser
6
+ import os
7
+
8
+ class MyConfig:
9
+ def __init__(self, configFile="config.ini"):
10
+ self.configFile = configFile
11
+ if not os.path.exists(self.configFile):
12
+ with open(self.configFile, 'w', encoding='gb2312') as f:
13
+ f.write("[main]\n")
14
+ self.cf = configparser.ConfigParser()
15
+ self.cf.read(self.configFile, encoding='gb2312')
16
+
17
+ # 获取节点值
18
+ def get(self, section, option,defaultValue=""):
19
+ if self.cf.has_section(section) and self.cf.has_option(section, option):
20
+ return self.cf.get(section, option)
21
+ return defaultValue
22
+
23
+ # 设置节点值
24
+ def set(self, section, option, value):
25
+ if self.cf.has_section(section) is False:
26
+ self.cf.add_section(section)
27
+ self.cf.set(section, option, value)
28
+ with open(self.configFile, 'w', encoding='gb2312') as f:
29
+ self.cf.write(f)
30
+
31
+ # 删除节点
32
+ def remove(self, section, option):
33
+ self.cf.remove_option(section, option)
34
+ with open(self.configFile, 'w', encoding='gb2312') as f:
35
+ self.cf.write(f)
36
+
37
+
pylhb/myodbc.py CHANGED
@@ -1,5 +1,5 @@
1
1
  '''
2
- 模块:pyodbc封装
2
+ 模块:myodbc
3
3
  作者:李生
4
4
  注意:
5
5
  ODBC Driver 17 for SQL Server下载:
pylhb/mysqlite.py ADDED
@@ -0,0 +1,102 @@
1
+ """
2
+ 模块:mysqlite
3
+ 作者:李生
4
+ """
5
+ import sqlite3
6
+ from typing import List, Tuple, Any, Optional
7
+
8
+ class SQLite:
9
+ def __init__(self, dbName: str = "data.db"):
10
+ self.dbName = dbName
11
+ self.connection = None
12
+ self.cursor = None
13
+
14
+ # 连接数据库
15
+ def connect(self) -> tuple[bool,str]:
16
+ try:
17
+ self.connection = sqlite3.connect(self.dbName)
18
+ self.cursor = self.connection.cursor()
19
+ return True,"OK"
20
+ except sqlite3.Error as e:
21
+ return False,str(e)
22
+
23
+ # 创建表
24
+ def createTable(self, tableName: str, columns: dict) -> tuple[bool,str]:
25
+ if not self.connection:
26
+ self.connect()
27
+ cols = ", ".join([f"{name} {defn}" for name, defn in columns.items()])
28
+ sql = f"CREATE TABLE IF NOT EXISTS {tableName} ({cols})"
29
+ try:
30
+ self.cursor.execute(sql)
31
+ self.connection.commit()
32
+ return True,"OK"
33
+ except sqlite3.Error as e:
34
+ return False,str(e)
35
+
36
+ # 插入记录
37
+ def insert(self, tableName: str, data: dict) -> tuple[bool,Optional[int]]:
38
+ if not self.connection:
39
+ self.connect()
40
+ columns = ", ".join(data.keys())
41
+ placeholders = ", ".join(["?"] * len(data))
42
+ values = tuple(data.values())
43
+ sql = f"INSERT INTO {tableName} ({columns}) VALUES ({placeholders})"
44
+ try:
45
+ self.cursor.execute(sql, values)
46
+ self.connection.commit()
47
+ return True,self.cursor.lastrowid
48
+ except sqlite3.Error as e:
49
+ return False,None
50
+
51
+ # 查询数据
52
+ def select(self, tableName: str, columns: List[str] = None, where: str = None, params: Tuple[Any] = None) -> tuple[bool,List[Tuple]]:
53
+ if not self.connection:
54
+ self.connect()
55
+ cols = "*" if columns is None else ", ".join(columns)
56
+ sql = f"SELECT {cols} FROM {tableName}"
57
+ if where:
58
+ sql += f" WHERE {where}"
59
+ try:
60
+ if where and params:
61
+ self.cursor.execute(sql, params)
62
+ else:
63
+ self.cursor.execute(sql)
64
+ results = self.cursor.fetchall()
65
+ return True,results
66
+ except sqlite3.Error as e:
67
+ return False,[]
68
+
69
+ # 更新数据
70
+ def update(self, tableName: str, data: dict, where: str, params: Tuple[Any]) -> tuple[bool,str]:
71
+ if not self.connection:
72
+ self.connect()
73
+ set_clause = ", ".join([f"{key} = ?" for key in data.keys()])
74
+ values = tuple(data.values()) + params
75
+ sql = f"UPDATE {tableName} SET {set_clause} WHERE {where}"
76
+ try:
77
+ self.cursor.execute(sql, values)
78
+ self.connection.commit()
79
+ return True,"OK"
80
+ except sqlite3.Error as e:
81
+ return False,str(e)
82
+
83
+ # 删除数据
84
+ def delete(self, tableName: str, where: str, params: Tuple[Any]) -> tuple[bool,str]:
85
+ if not self.connection:
86
+ self.connect()
87
+ sql = f"DELETE FROM {tableName} WHERE {where}"
88
+ try:
89
+ self.cursor.execute(sql, params)
90
+ self.connection.commit()
91
+ return True,"OK"
92
+ except sqlite3.Error as e:
93
+ return False,str(e)
94
+
95
+ # 关闭连接
96
+ def close(self) -> None:
97
+ if self.cursor:
98
+ self.cursor.close()
99
+ self.cursor=None
100
+ if self.connection:
101
+ self.connection.close()
102
+ self.connect=None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pylhb
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Mr.Lee's Helpers
5
5
  License: Non-Commercial Use License
6
6
 
@@ -56,8 +56,6 @@ if __name__ == "__main__":
56
56
  (successed,msg)=mssql.connect()
57
57
  # print(successed)
58
58
  # print(msg)
59
- print("数据库连接是否成功:")
60
- print(mssql.Connected)
61
59
 
62
60
  # Demo1:查询数据
63
61
  sql="SELECT TOP 2 P_CusName,P_Tel FROM Dt_Customers WITH(NOLOCK)"
@@ -109,3 +107,83 @@ if __name__ == "__main__":
109
107
  # 关闭
110
108
  mssql.close()
111
109
  ```
110
+
111
+ ## 🌺myconfig
112
+
113
+ 通过configparser读取配置文件。
114
+
115
+ 使用示例:
116
+
117
+ ```
118
+ if __name__ == "__main__":
119
+ config = MyConfig("config.ini")
120
+ config.set("main", "host", "127.0.0.1")
121
+ print(config.get("main", "host"))
122
+ ```
123
+
124
+ ## 🌺mysqlite
125
+
126
+ 通过sqlite3访问SQLite数据库。
127
+
128
+ 使用示例:
129
+
130
+ ```
131
+ if __name__ == "__main__":
132
+ # 创建数据库实例
133
+ db = SQLite("test.db")
134
+
135
+ # 连接数据库
136
+ db.connect()
137
+
138
+ # 创建表
139
+ columns = {
140
+ "id": "INTEGER PRIMARY KEY AUTOINCREMENT",
141
+ "name": "TEXT NOT NULL",
142
+ "age": "INTEGER",
143
+ "email": "TEXT"
144
+ }
145
+ db.createTable("users", columns)
146
+
147
+ # 插入数据
148
+ user1 = {"name": "张三", "age": 25, "email": "zhangsan@example.com"}
149
+ user2 = {"name": "李四", "age": 30, "email": "lisi@example.com"}
150
+ user3 = {"name": "王五", "age": 28, "email": "wangwu@example.com"}
151
+
152
+ db.insert("users", user1)
153
+ db.insert("users", user2)
154
+ db.insert("users", user3)
155
+
156
+ # 查询所有数据
157
+ print("所有用户:")
158
+ users = db.select("users")
159
+ for user in users:
160
+ print(user)
161
+
162
+ # 条件查询
163
+ print("\n年龄大于28的用户:")
164
+ users = db.select("users", where="age > ?", params=(28,))
165
+ for user in users:
166
+ print(user)
167
+
168
+ # 更新数据
169
+ update_data = {"age": 31}
170
+ db.update("users", update_data, "name = ?", ("李四",))
171
+
172
+ # 查询特定列
173
+ print("\n用户姓名和邮箱:")
174
+ users = db.select("users", columns=["name", "email"])
175
+ for user in users:
176
+ print(user)
177
+
178
+ # 删除数据
179
+ db.delete("users", "name = ?", ("王五",))
180
+
181
+ # 再次查询所有数据
182
+ print("\n删除后的所有用户:")
183
+ users = db.select("users")
184
+ for user in users:
185
+ print(user)
186
+
187
+ # 关闭连接
188
+ db.close()
189
+ ```
@@ -0,0 +1,8 @@
1
+ pylhb/__init__.py,sha256=w-OXDD2tii5g0E0kWQYl-LP0C1LSezXFkUCe5cgO-nY,51
2
+ pylhb/myconfig.py,sha256=skaiIe2jfnWj4X3bfbBqBpygkcrDZ2rMKxX_CBKekms,1223
3
+ pylhb/myodbc.py,sha256=E5yiSSaN8_CtW40IeY_jJcgPlW3KBrZVN5t7UCh0RSQ,7721
4
+ pylhb/mysqlite.py,sha256=mXEiYoK-RIFC9PEq3Y2Sjq-dNcFGcIeQYSdrnP7Zv4Q,3593
5
+ pylhb-0.2.2.dist-info/WHEEL,sha256=eycQt0QpYmJMLKpE3X9iDk8R04v2ZF0x82ogq-zP6bQ,79
6
+ pylhb-0.2.2.dist-info/entry_points.txt,sha256=JgRWNHrbkaBFjPwbIi60UzpImMHwTtOchFnclGWMqeY,38
7
+ pylhb-0.2.2.dist-info/METADATA,sha256=qsRuLU3Qx0g_fIwSkiGei3CMqmfjxPUYBA30uUXgSrM,6036
8
+ pylhb-0.2.2.dist-info/RECORD,,
@@ -1,6 +0,0 @@
1
- pylhb/__init__.py,sha256=w-OXDD2tii5g0E0kWQYl-LP0C1LSezXFkUCe5cgO-nY,51
2
- pylhb/myodbc.py,sha256=6cmnJuOQ34UOEeEL942zhGngs53pk27-VW6Vo6t2PD0,7727
3
- pylhb-0.2.0.dist-info/WHEEL,sha256=eycQt0QpYmJMLKpE3X9iDk8R04v2ZF0x82ogq-zP6bQ,79
4
- pylhb-0.2.0.dist-info/entry_points.txt,sha256=JgRWNHrbkaBFjPwbIi60UzpImMHwTtOchFnclGWMqeY,38
5
- pylhb-0.2.0.dist-info/METADATA,sha256=SJ2HtZjq-LHppo8lyf46XwcTh59KWFHVEnbTSNZHtoU,4319
6
- pylhb-0.2.0.dist-info/RECORD,,
File without changes