pymysql操作mysql數據庫


1.建庫

import pymysql
# 建庫
try:
    conn=pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='123456',
    )
    cur=conn.cursor()
    create_database_sql='CREATE DATABASE IF NOT EXISTS py3_tstgr DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
    cur.execute(create_database_sql)
    cur.close()
    print('創建數據庫 py3_tstgr 成功!')
except pymysql.Error as e:
    print('pymysql.Error: ',e.args[0],e.args[1])

 

2.建表

import pymysql
# 建表
try:
    conn=pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='123456',
        db='py3_tstgr',
        charset='utf8'
    )
    cur=conn.cursor()
    cur.execute('drop table if exists user;')
    create_table_sql='''
        CREATE TABLE user(
            id int(11) DEFAULT NULL ,
            name VARCHAR(50) DEFAULT NULL ,
            password VARCHAR(30) DEFAULT NULL ,
            birthday TIMESTAMP DEFAULT now() 
        )engine=innodb DEFAULT CHARACTER set utf8;
    '''
    cur.execute(create_table_sql)
    print('創建數據庫表成功!')
except pymysql.Error as e:
    print('mysql.Error: ',e.args[0],e.args[1]) 

 

3.增、改、刪、查數據操作

import pymysql
# 數據庫操作
# 連接
def db_conn(host,port,user,passwd,db_name):
    try:
        conn=pymysql.connect(
            host=host,
            port=port,
            user=user',
            passwd=password,
            db=db_name,
            charset='utf8',
        )
        # cur=conn.cursor()
        print('數據庫連接成功!')
        # 返回連接
        return conn
    except pymysql.Error as e:
        print('數據庫連接失敗')
        print('mysql.Error: ',e.args[0],e.args[1])

def db_cur(conn):
    # 獲取游標
    cur=conn.cursor()
    return cur

def db_close(cur,conn):
    # 游標關閉
    cur.close()
    # 提交事務
    conn.commit()
    # 連接關閉
    conn.close()

# 插入單行數據
def db_insert_data(sql,cur,*args):
    try:
        # print(args)
        result=cur.execute(sql,args)
        print('添加語句受影響的行數:',result)
    except Exception as e:
        print('db_insert_data error: ',e.args)

# 批量插入數據
def db_insert_datas(sql,cur,list_datas):
    try:
        result=cur.executemany(sql,list_datas)
        print('批量插入受影響的行數:',result)
    except Exception as e:
        print('db_insert_datas error: ',e.args)

# 修改單行數據
def db_update(sql,cur):
    result=cur.execute(sql)
    print('修改語句受影響的行數:',result)

# 批量修改數據
def db_update_datas(sql,cur,list_datas):
    try:
        result=cur.executemany(sql,list_datas)
        print('批量修改受影響的行數:',result)
    except Exception as e:
        print('db_update_datas error: ',e.args)

# 刪除單行數據
def db_delete_data(sql,cur):
    result=cur.execute(sql)
    print('刪除語句受影響的行數:',result)

# 批量刪除數據
def db_delete_datas(sql,cur,list_datas):
    try:
        result=cur.executemany(sql,list_datas)
        print('批量刪除受影響的行數:',result)
    except Exception as e:
        print('db_delete_datas error: ',e.args)

# 回滾
def roll_back(conn):
    try:
        conn.rollback()
        print('回滾完成!')
    except Exception as e:
        print('rollback error: ',e.args)

def db_select_data(sql,cur):
    result=cur.execute(sql)
    print('查詢語句受影響的行數:',result)

def db_select_datas(sql,cur,list_datas):
    try:
        result=cur.executemany(sql,list_datas)
        print('批量查詢受影響的行數:',result)
    except Exception as e:
        print('db_select_datas error: ',e.args)

if __name__=="__main__":

    host='127.0.0.1'
    port=3306
    user='root'
    passwd='123456'
    db='py3_tstgr'
    conn=db_conn(host,port,user,passwd,db)
    print(conn)
    cur=db_cur(conn)
    print(cur)
    
    insert_sql="insert into user values(1,'tom','123','1990-01-01');"
    db_insert_data(insert_sql,cur)

    insert_sql2="insert into user values(%s,%s,%s,%s);"
    db_insert_data(insert_sql2,cur,2,'lucy','aaa','1991-02-02')
    
    insert_datas_sql="insert into user values(%s,%s,%s,%s);"
    list_datas=[(2,'ha2','222','1992-02-02'),(3,'ha3','333','1993-03-03'),(4,'ha4','444','1994-04-04')]
    db_insert_datas(insert_datas_sql,cur,list_datas)
    
    # 查詢數據
    sql="select * from user;"
    cur.execute(sql)
    res1=cur.fetchone()   # 獲取一行數據
    print(res1)
    res2=cur.fetchmany(2)  #獲取多行數據
    print(res2)
    res3=cur.fetchall()  # 獲取所有數據
    print(res3)
    print(cur.fetchone())  # None
    # 重置游標
    cur.scroll(1,mode='relative')
    print(cur.fetchone())
    
    # 更新數據
    up_sql="update user set name='lala' where password='123';"
    db_update(up_sql,cur)
    
    # 批量更新數據
    up_sqls="update user set name=%s where password=%s;"
    up_datas=[('lw','123'),('lc','aaa')]
    db_update_datas(up_sqls,cur,up_datas)
    
    # 刪除數據
    delete_sql="delete from user where name='lw';"
    db_delete_data(delete_sql,cur)
    
    delete_sqls="delete from user where name=%s;"
    db_delete_datas(delete_sqls,cur,[('lc'),('hah2'),('hah3')])

    # print(cur.rownumber)  # 0 獲取所在行號

    # cur.scroll(0,mode='absolute')
    # cur.execute('select * from user;')

    select_sql="select * from user;"
    db_select_data(select_sql,cur)
    print(cur.fetchall())
    

    # roll_back(conn)  # 回滾
    # print(cur.rownumber)
    # cur.scroll(0, mode='absolute')
    # cur.execute('select * from user;')

    # 查詢單行
    select_sql = "select * from user;"
    db_select_data(select_sql, cur)
    
    # 批量查詢
    select_sqls="select * from user where name=%s;"
    db_select_datas(select_sqls,cur,[('ha1'),('ha2'),('ha3')])
    print(cur.fetchall())

    db_close(cur,conn)  # 斷開連接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM