python: read mysql

sql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
create database geovindu;
 
use geovindu;
 
drop table BookKindList;
#书目录
create table BookKindList
(
    BookKindID INT NOT NULL AUTO_INCREMENT, #自动增加
    BookKindName nvarchar(500) not null,
    BookKindParent int null,
   PRIMARY KEY(BookKindID)  #主键
);
 
insert into BookKindList(BookKindName,BookKindParent) values("六福书目录",0);
 
 
#删除
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`DeleteBookKind` $$
CREATE PROCEDURE `geovindu`.`DeleteBookKind` (IN param1 INT)
BEGIN
         Delete From bookkindlist WHERE BookKindID = param1;
END $$
DELIMITER ;
  
delete from bookkindlist WHERE BookKindID =10;
  
  
SELECT * FROM bookkindlist;
     
 execute DeleteBookKind(10);
   
   
   
#查询所有
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindListAll` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindListAll` ()
BEGIN
    SELECT * FROM bookkindlist;
END $$
DELIMITER ;
   
 DROP PROCEDURE proc_Select_BookKindListAll;
   
   
   
select * from  `geovindu`.`bookkindlist`;
SELECT * FROM bookkindlist;
   
#统计
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`BookKindCount` $$
CREATE PROCEDURE `geovindu`.`BookKindCount` (OUT param1ID INT)
BEGIN
        select COUNT(*) into param1ID  From bookkindlist;
END $$
DELIMITER ;
   
#更新
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Update_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Update_BookKindList` (IN param1ID Int,IN param1Name NVarChar(1000),IN param1Parent Int)
BEGIN
IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then #如果存在相同的记录,不更新名称
UPDATE BookKindList
    SET
        BookKindName=param1Name ,
        BookKindParent=param1Parent
    where
        BookKindID=param1ID;
ELSE
    UPDATE BookKindList
    SET BookKindParent=param1Parent
    where
        BookKindID=param1ID;
END IF;
END $$
DELIMITER ;
   
   
#查询一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindList` (IN param1 INT)
BEGIN
        SELECT * FROM BookKindList WHERE BookKindID = param1;
END $$
DELIMITER ;
   
#插入一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindList` (IN param1Name NVarChar(1000),IN param1Parent Int)
BEGIN
        insert into BookKindList(BookKindName,BookKindParent) values(param1Name,param1Parent);
END $$
DELIMITER ;
   
#插入一条返回值
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindOut` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindOut` (IN param1Name NVarChar(1000),IN param1Parent Int,OUT ID INT)
BEGIN
     IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then   #如果存在相同的记录,不添加
        INSERT INTO BookKindList (BookKindName,BookKindParent)VALUES(param1Name ,param1Parent);
        #set ID=Last_insert_id()
        SELECT LAST_INSERT_ID() into ID;
      end if;
END $$
DELIMITER ;

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
"""
bookkind.py  书目录类
读取excel文件数据
date 2023-06-15
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
 
"""
 
import sys
import os
 
class BookKindList(object):
 
    def __init__(self, BookKindID, BookKindName, BookKindParent):
        """
        书目录类  构造函数
        :param  BookKindID:  自增ID
        :param  BookKindName:  书目录名
        :param  BookKindParent:  父ID
        """
        self.__BookKindID = BookKindID
        self.__BookKindName = BookKindName
        self.__BookKindParent = BookKindParent
 
 
    def getBookKindID(self):
        """
        得到自增ID
        :return:  返回自增ID
        """
        return self.__BookKindID
 
 
    def setBookKindID(self, BookKindID):
        """
        自增ID
        :param  BookKindID:  ID
        :return:  none
        """
        self.__BookKindID = BookKindID
 
 
    def getBookKindName(self):
        """
        获取书目录名
        :return:  返回书类目名
        """
        return self.__BookKindName
 
 
    def setBookKindName(self, BookKindName):
        """
        设置书目录名
        :param  BookKindName:  书类名
        :return:  none
        """
        self.__BookKindName = BookKindName
 
 
    def getBookKindParent(self):
        """
        获取父ID
        :return:  返回月份
        """
        return self.__BookKindParent
 
 
    def setBookKindParent(self, BookKindParent):
        """
        设置父ID
        :param  BookKindParent:  输入父ID
        :return:  none
        """
        self.__BookKindParent = BookKindParent
 
 
    def __str__(self):
        return f"BookKindID:  {self.__BookKindID},  BookKindName:  {self.__BookKindName},  BookKindParent:  {self.__BookKindParent}"
 
 
 
 
"""
MySQLDAL.py
读取MySQL数据
date 2023-06-15
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
参考:
https://www.mssqltips.com/sqlservertip/6694/crud-operations-in-sql-server-using-python/
https://learn.microsoft.com/zh-cn/sql/connect/python/pymssql/step-3-proof-of-concept-connecting-to-sql-using-pymssql?view=sql-server-ver16
https://docs.sqlalchemy.org/en/20/tutorial/data_update.html
https://datatofish.com/update-records-sql-server/
https://www.dev2qa.com/how-to-use-python-to-insert-delete-update-query-data-in-sqlite-db-table/
https://kontext.tech/article/893/call-sql-server-procedure-in-python
https://learn.microsoft.com/en-us/sql/connect/python/pymssql/python-sql-driver-pymssql?view=sql-server-ver16
https://pythontic.com/database/mysql/stored_procedure
https://github.com/pymssql/pymssql/blob/master/tests/test_connections.py
https://pynative.com/python-mysql-execute-stored-procedure/
 
"""
 
import sys
import os
import pymssql
import pymysql
import pyodbc
import BookKind
 
class sqlDAL(object):
 
    def mysqlconnect():
        """
        连接MySQL 检测其版本
        """
        # To connect MySQL database
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password="geovindu",
            db='geovindu',
        )
 
        cur = conn.cursor()
        cur.execute("select @@version")
        output = cur.fetchall()
        print(output)
 
        # To close the connection
        cur.close()
        conn.close()
 
    def connectDB(self, host, user, psw, db_name, charset='utf8'):
        self.db = pymysql.connect(host=host, user=user, password=psw, db=db_name, charset=charset)
 
 
    def execSql(self, sql):
        """
        执行SQL语句
        :param sql: SQL 语句
        :return:
        """
        # sql is insert, delete or update statement
        cursor = self.db.cursor()
        try:
            cursor.execute(sql)
            # commit sql to mysql
            self.db.commit()
            cursor.close()
            return True
        except:
            self.db.rollback()
        return False
 
 
    def select():
        """
        查询
        """
        # To connect MySQL database
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password="geovindu",
            db='geovindu',
        )
 
        cursor = conn.cursor()
        cursor.callproc('proc_Select_BookKindListAll')
        # print results
        print("Printing laptop details")
        #for result in cursor.stored_results():
            #print(result.fetchall())
        rows = cursor.fetchall()
        for row in rows:
            print(f'{row[0]} {row[1]} {row[2]}')
        # To close the connection
        cursor.close()
        conn.close()
 
 
    def selectdu():
        """
        查询
        """
        # To connect MySQL database
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password="geovindu",
            db='geovindu',
        )
 
        cursor = conn.cursor()
        cursor.callproc('proc_Select_BookKindListAll')
        # print results
        print("Printing laptop details")
        #for result in cursor.stored_results():
        details =cursor.fetchall()#cursor.stored_results()#result.fetchall()
        for det in details:
            print(det)
        # To close the connection
        cursor.close()
        conn.close()
 
 
    def Add(objdu):
        """
        添加
        :param objdu: 书目录类
        :return:
        """
        # To connect MySQL database
        conn = pymysql.connect(
             host='localhost',
             user='root',
             password="geovindu",
             db='geovindu',
        )
        #print(type(objdu.getBookKindName()),objdu.getBookKindParent())
        cursor = conn.cursor() #prepared=True
        args=(objdu.getBookKindName(), objdu.getBookKindParent())
        cursor.callproc('proc_Insert_BookKindList', args)
        conn.commit()
        # print results
        print("Printing laptop details")
        #for result in cursor.stored_results():
            #print(result.fetchall())
            # To close the connection
        cursor.close()
        conn.close()
 
    def Addstr(BookKindID, BookKindName, BookKindParent):
        """
        添加
        :param BookKindName:
        :param BookKindParent:
        :return:
        """
        # To connect MySQL database
        conn = pymysql.connect(
             host='localhost',
             user='root',
             password="geovindu",
             db='geovindu',
        )
 
        cursor = conn.cursor()#prepared=True
        args = (BookKindName, BookKindParent)
        cursor.callproc('proc_Insert_BookKindList', args)
        conn.commit()
        # print results
        print("Printing laptop details")
        #for result in cursor.stored_results():
            #print(result.fetchall())
            # To close the connection
        cursor.close()
        conn.close()

  

 

调用:

1
2
3
4
5
6
7
8
9
10
import MySQLDAL
import BookKind
 
  MySQLDAL.sqlDAL.mysqlconnect()
    #MySQLDAL.sqlDAL.Addstr(0,"文学",1)
    tu.append(BookKind.BookKindList(0,"科学",1))
 
    MySQLDAL.sqlDAL.Add(BookKind.BookKindList(0,"科学",1))
    MySQLDAL.sqlDAL.select()
    MySQLDAL.sqlDAL.selectdu()

  

 输出:

1
2
3
4
5
6
7
8
9
10
11
(('8.0.32',),)
<class 'str'> 1
Printing laptop details
Printing laptop details
1 六福书目录 0
6 文学 1
7 科学 1
Printing laptop details
(1, '六福书目录', 0)
(6, '文学', 1)
(7, '科学', 1)

  

posted @   ®Geovin Du Dream Park™  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2010-06-15 asp.net 3.5 csharp 实现事务
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示