diff --git a/.gitignore b/.gitignore index e69de29..0d20b64 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/.idea/AutoFramework.iml b/.idea/AutoFramework.iml index f7f2049..485bc5b 100644 --- a/.idea/AutoFramework.iml +++ b/.idea/AutoFramework.iml @@ -2,8 +2,6 @@ - - diff --git a/Base/Class/.gitkeep b/Base/Class/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Base/Class/DataBase.py b/Base/Class/DataBase.py new file mode 100644 index 0000000..f416cc8 --- /dev/null +++ b/Base/Class/DataBase.py @@ -0,0 +1,97 @@ +import re,pymysql.cursors +class Mysql(): + __conn__ = None + __curr__ = None + def __init__(self,**kwargs): + if kwargs: + self.connect(**kwargs) + + def connect(self, host=None, port=0, user=None, password='', database=None, charset='', cursor='Dict'): + if self.__conn__: + raise Exception('连接已存在 | Connection already exists.') + match cursor: + case 'Index': + cursorClass = pymysql.cursors.Cursor + case 'Dict': + cursorClass = pymysql.cursors.DictCursor + case _: + cursorClass = pymysql.cursors.DictCursor + self.__conn__ = pymysql.connect( + host=host, port=port, + user=user, password=password, + database=database, charset=charset, + autocommit=True, + connect_timeout=10, + cursorclass=cursorClass, + client_flag=pymysql.constants.CLIENT.MULTI_STATEMENTS + ) + self.__curr__ = self.__conn__.cursor() + return self + + def execute(self,*args): + if self.__curr__ == None: + raise Exception('连接不存在 | Connection does not exist.') + self.__curr__.execute(*args) + return self + + def count(self): + if self.__curr__ == None: + raise Exception('连接不存在 | Connection does not exist.') + return self.__curr__.rowcount + + def fetchall(self): + if self.__curr__ == None: + raise Exception('连接不存在 | Connection does not exist.') + return self.__curr__.fetchall() + + def fetchone(self): + if self.__curr__ == None: + raise Exception('连接不存在 | Connection does not exist.') + return self.__curr__.fetchone() + + def close(self): + if self.__curr__ or self.__conn__: + self.__curr__.close() + self.__conn__.close() + self.__curr__ = None + self.__conn__ = None + return True + +if __name__ == '__main__': + # Example. + connConfig = { + "host": "127.0.0.1", "port": 3306, "user": "root", "password": "root", "database": "db", "charset": "utf8", + } + sqlConnect = Mysql(**connConfig,cursor='Dict') + sqlConnect.execute(''' + CREATE TABLE `user` ( + `uid` int(11) NOT NULL AUTO_INCREMENT, + `username` char(20) DEFAULT NULL, + `email` varchar(64) DEFAULT NULL, + `phone` char(11) DEFAULT NULL, + `password` char(32) DEFAULT NULL, + PRIMARY KEY (`uid`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `email` (`email`), + UNIQUE KEY `phone` (`phone`) + ) + ENGINE=MyISAM AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8; + ''') + print('RowCounts:', sqlConnect.count(), 'SqlResult:', sqlConnect.fetchall()) + sqlConnect.execute(''' + INSERT INTO user (username,email,phone,password) VALUES ("刘德华","10000@example.com","13512310000","0123456789abcdef0123456789abcdef"); + ''') + print('RowCounts:', sqlConnect.count(), 'SqlResult:', sqlConnect.fetchall()) + sqlConnect.execute(''' + INSERT INTO user (username,email,phone,password) VALUES ("周润发","10002@example.com","13512310002","0123456789abcdef0123456789abcdef"); + ''') + print('RowCounts:', sqlConnect.count(), 'SqlResult:', sqlConnect.fetchall()) + sqlConnect.execute(''' + SELECT * FROM user WHERE uid LIKE "1%"; + ''') + print('RowCounts:', sqlConnect.count(), 'SqlResult:', sqlConnect.fetchall()) + sqlConnect.execute(''' + DROP TABLE user; + ''') + print('RowCounts:', sqlConnect.count(), 'SqlResult:', sqlConnect.fetchall()) + sqlConnect.close() diff --git a/main.py b/main.py index f5809a5..d2e5709 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,34 @@ -print('test') -print('test') -print('test') -print('test') \ No newline at end of file +import pymysql.cursors +import re +conn = pymysql.connect( + host='127.0.0.1', + port=3306, + user='root', + password='root', + database='db', + charset='utf8', + autocommit=True, + connect_timeout=10, + cursorclass=pymysql.cursors.DictCursor, + client_flag=pymysql.constants.CLIENT.MULTI_STATEMENTS +) +curr = conn.cursor() +try: + resu = curr.execute('insert into user (username,email,phone,password) values ("刘周星驰","10003@example.com","13512310003","0123456789abcdef0123456789abcdef");') + # resu = curr.execute('select * from user;') + # resu = curr.execute('select username from user where uid like "1%";') + print('res:',resu) +except: + pass +conn.commit() +print(curr.rowcount) +print(curr.fetchall()) + +i = "4" +match i: + case 1: + print("是1") + case "2"|"3": + print('又是1') + case _: + print("其它") \ No newline at end of file