(技術)Python 3 與 pymysql 操作數據庫

1.創(chuàng)建表


import pymysql
def create_table():
    #建立數據庫鏈接
    #  寫法2: db = pymysql.connect('localhost','root','**','**')
    db = pymysql.connect(host='localhost',
                         user='**',
                         password='**',
                         db='**')
    # 創(chuàng)建 t_user 表
    sql = 'create table if not exists t_user(id int not null auto_increment,name text,age text,address text,primary key (id))'
    # 創(chuàng)建游標對象
    cursor = db.cursor()
    try:
        cursor.execute(sql)
        db.commit()
        print('表創(chuàng)建成功')
    except BaseException as e:
        print('表創(chuàng)建失敗',e)
        db.rollback()
    finally:
        cursor.close()
        db.close()


if __name__ == '__main__':
    create_table()

2.插入數據

import pymysql
def insert_table(value):
    # 建立數據庫鏈接
    #  寫法2: db = pymysql.connect('localhost','root','**','**')
    db = pymysql.connect(host='localhost',
                         user='***',
                         password='***',
                         db='***')
    # t_user 插入數據sql
    sql = 'insert into t_user(name,age,address) values(%s,%s,%s)'
    try:
        cursor = db.cursor()
        # 設置字符集為utf8 否則  報錯 'latin-1' codec can't encode characters in position...
        db.set_charset('utf8')
        cursor.execute(sql,value)
        db.commit()
        print('數據插入成功')
    except BaseException as e:
        print('數據插入失敗',e)
        db.rollback()
        cursor.close()
    finally:
        db.close()
        cursor.close()

if __name__ == '__main__':
    data = ('張三瘋', '18', '武當山')  # Tuple 元組
    insert_table(data)

3、查詢數據

import pymysql
def fetch_table_data():
    #建立數據庫鏈接
    #  寫法2: db = pymysql.connect('localhost','root','**','**')
    db = pymysql.connect(host='localhost',
                         user='root',
                         password='mgah',
                         db='xk')
    # 查詢 t_user 表全部數據
    sql = 'select * from t_user'
    # 創(chuàng)建游標對象
    cursor = db.cursor()
    try:
        #設置字符集,否則中文會顯示亂碼
        db.set_charset('utf8')
        cursor.execute(sql)
        #獲取所有的數據,返回的結果為Tuple元組
        result = cursor.fetchall();
        # mode默認是relative,relative:表示從當前所在的?開始移動; absolute:表示從第??開始移動
        cursor.scroll(0, mode='absolute')# 重置游標位置,偏移量:?于0向后移動;?于0向前移動
        single_result = cursor.fetchone() # 獲取單條數據
        cursor.scroll(0, mode='absolute')# 重置游標位置,偏移量:?于0向后移動;?于0向前移動
        many_result = cursor.fetchmany(2) #獲取2條數據
        db.commit()
        print('查詢所有數據',result)
        print('獲取單條數據', single_result)
        print('獲取兩條', many_result)
    except BaseException as e:
        print('查詢失敗',e)
        db.rollback()
    finally:
        cursor.close()
        db.close()


if __name__ == '__main__':
    fetch_table_data();

4.更新數據


import pymysql
def update_table(value):
    # 建立數據庫鏈接
    #  寫法2: db = pymysql.connect('localhost','root','**','**')
    db = pymysql.connect(host='localhost',
                         user='root',
                         password='mgah',
                         db='xk')
    # t_user 插入數據sql
    sql = 'update t_user set name=%s where id=%s'
    try:
        cursor = db.cursor()
        # 設置字符集為utf8 否則  報錯 'latin-1' codec can't encode characters in position...
        db.set_charset('utf8')
        cursor.execute(sql,value)
        db.commit()
        print('數據更新成功')
    except BaseException as e:
        print('數據更新失敗',e)
        db.rollback()
        cursor.close()
    finally:
        db.close()
        cursor.close()

if __name__ == '__main__':

    data = ('張一瘋', '1') # Tuple 元組
    update_table(data);


5、刪除數據


import pymysql
def delete_table(value):
    # 建立數據庫鏈接
    #  寫法2: db = pymysql.connect('localhost','root','**','**')
    db = pymysql.connect(host='localhost',
                         user='root',
                         password='mgah',
                         db='xk')
    # t_user 插入數據sql
    sql = 'delete from t_user where id=%s'
    try:
        cursor = db.cursor()
        # 設置字符集為utf8 否則  報錯 'latin-1' codec can't encode characters in position...
        db.set_charset('utf8')
        cursor.execute(sql,value)
        db.commit()
        print('數據刪除成功')
    except BaseException as e:
        print('數據刪除失敗',e)
        db.rollback()
        cursor.close()
    finally:
        db.close()
        cursor.close()

if __name__ == '__main__':

    id = '1';
    delete_table(id);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容