簡單幹貨,在python中 PyMySQL 的各種小白用法!

mysql的入門使用:

mysql筆記, 記錄一些常用的東西, 學習ing

基本使用:

  • 開啓mysql服務 net start mysql

  • 關閉mysql服務 net stop mysql

  • 進入mysql服務 mysql -u root -p root是用戶名稱 這個時候輸入數據庫密碼:

    然後進入mysq workbeach 中 進行操作 ,或者使用命令行實現,這裏使用第三方庫,pymysql。

重要的SQL命令語法

SQL命令 描述
select 從數據庫中提取數據
updata 更新數據庫中的數據
delect 從數據庫中刪除數據
insert into 從數據庫中插入新數據
create database 創建新數據庫
alter database 修改數據庫
create table 創建新表
alter table 修改數據庫表
drop table 刪除表
create index 創建索引, (搜索鍵)
drop index 刪除索引

基礎函數作用:

# 創建數據庫連接
self.db = pymysql.connect(host=self.host, user=self.user,
                          password=self.password, database=self.databases, cursorclass=self.cursorclass)
# 創建遊標 便於執行sql語氣
self.cursor = self.db.cursor()

# 使用遊標來執行sql語氣
sql ='select * from students'
self.cursor.execute(sql)  


# 得到數據表的行數
self.cursor.rowcount()


# 得到所有條數據,也就得到了版本號
self.cursor.fetchall()  

# 得到第一條數據,也就得到了版本號
self.cursor.fetchone() 

# 注意的是,如果是對數據庫做了修改、刪除、增加的操作,那麼一定要commit提交,查詢和創建表不需要提交
self.db.commit()  

# 回滾數據
self.db.rollback()

# 關閉遊標
self.cursor.close()  

# 關閉數據庫
self.db.close()  

SQL基礎創建函數:

創建數據庫:

#  創建數據庫

sql = 'create database [數據庫名稱]  default character set utf8'
cursor.execute(sql)

# 獲得當前mysql版本
sql = 'select version()'
cursor.execute(sql)

創建表:

# 創建表
sql = 'create tabel if not exists [表名稱][students]  (
id varchar(255) not NUll, name varchar(255) not NUll
age INT not Null, primary key(id)) '

cursor.execute(sql)



# 展示表
sql = 'show tables'
cursor.execute(sql)

插入數據:



# 插入數據
name = '白嘉誠'
sql = f'insert into student_score(name, gender) values("{name}","男")'  # 使用引號括起來

try:
    cursor.execute(sql)  #  執行語氣
    db.commit()  # 如果修改了就要提交一次表單
except:
    db.rollback()  # 如果發生異常 執行數據回滾,重新再來
    
   
# 動態插入數據 使用字典

data = {
    'id': 1,
    'name': '張三炮',
    'gender': '男',
    'age': 12,
    'score': 99
}


def fun():
    data_len = "'%s', " * len(data)
    data_len = data_len[:-2]  # 去引號
    data_len = data_len % tuple(data.values())  # 格式化
    return data_len


fun()
table = 'student_score'
keys = ', '.join(data.keys())

sql = f"insert into {table}({keys}) values( {fun()})"


更新數據:

# 更新數據

sql = "update students set age = '[new]' where name = '[old]'"
try:
    cursor.execute(sql)  #  執行
    db.commit()  # 提交表單
except:
    db.rollback()  # 回滾數據

db,close()

刪除數據:

# 刪除數據

table = 'student'
condition = 'name ="張二炮"'
sql = f'delete from {table} where {condition}'
try:
    cursor.excute(sql) #  執行
    db.commit()  #  提交表單
except:
	db,rollback()  

db.close()

優質查詢數據:


# 查詢數據
# 優質單個數據查詢   佔用資源少 逐行取數據, 每循環一次, 遊標就會偏移一次

table = 'students'
condition = 'age >= 20'
sql = f"select * from  {table}  where  {condition}"
try:
    cursor.execute(sql)  # 執行語氣
    print('Count:', cursor.rowcount)
    row = cursor.fetchone()
    while row:
        print('row', row)
        row = cursor.fetchone()
except:
    print('ERROR')

    

功能簡單封裝:

這個是借鑑了其他博客:當時沒記住作者博客ID ,搞得忘記了,知道的可以聯繫我, 我後續加上去


# -*- coding :  utf-8 -*-
# @Time      :  2020/6/8  22:09
# @author    :  沙漏在下雨
# @Software  :  PyCharm
# @CSDN      :  https://me.csdn.net/qq_45906219

class MYSQL():
    def __init__(self, host, user, password, database, cursorclass=None):  # cursorclass將返回結果呈字典顯示 ,如果傳了就應用,不傳就爲None
        self.host = host  # ip地址,本機就傳localhost就可以
        self.user = user  # 賬戶名,如果你沒有更改過,那就是root
        self.password = password  # 數據庫密碼
        self.databases = database  # 你具體要連接的哪一個數據庫
        self.cursorclass = cursorclass  # 返回結果呈字典形式  {}

    def connect(self):  # 創建連接數據庫方法
        import pymysql
        # 創建數據庫連接
        self.db = pymysql.connect(host=self.host, user=self.user,
                                  password=self.password, database=self.databases, cursorclass=self.cursorclass)
        # 創建遊標 便於執行sql語氣
        self.cursor = self.db.cursor()

    def get_one(self, sql):  # 返回一條符合條件的查詢結果
        result = 0
        try:
            self.connect()
            self.cursor.execute(sql)
            result = self.cursor.fetchone()  # 得到第一條數據
            self.close()
        except Exception as e:
            print('select error', e)
        return result

    def get_all(self, sql):  # 返回全部符合條件的查詢結果
        result = 0
        try:
            self.connect()  # 聲明連接對象, 連接數據庫
            self.cursor.execute(sql)  # 使用遊標來執行sql語氣
            result = self.cursor.fetchall()  # 得到所有條數據,也就得到了版本號
            self.close()
        except Exception as e:
            print("select error", e)
        return result

    def __edit(self, sql):  # 創建主函數
        result = 1  # 設置結果集,用於調用的時候做判斷
        try:  # 這裏是使用的try語句來嘗試進行操作
            self.connect()
            self.cursor.execute(sql)
            self.db.commit()  # 注意的是,如果是對數據庫做了修改、刪除、增加的操作,那麼一定要commit提交,查詢和創建表不需要提交
            self.close()
        except Exception as e:  # 如果操作失敗,報出操作異常,且遊標進行回滾
            print('error :', e)
            result = 0
            self.db.rollback()
        return result

    def insert(self, sql):
        # 插入語句  ,以下三個都是一樣的,只是調用的時候,我們看起來更加清晰而已
        return self.__edit(sql)  # 通過主函數的處理,來去執行sql語句

    def delete(self, sql):  # 刪除語句
        return self.__edit(sql)

    def update(self, sql):  # 修改語句
        return self.__edit(sql)

    def close(self):  # 關閉方法
        self.cursor.close()  # 關閉遊標
        self.db.close()  # 關閉數據庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章