Python中pymysql通過字典插入資料

2021-09-24 17:15:25 字數 1818 閱讀 3228

今天參加面試被大佬要求寫一段資料庫介面實操**,首先在寫字板上開頭:

def insert(table,data):

#這裡你知道table和data,其中data是乙個字典,寫插入資料庫的**

想了一下,想到的一些方法被否定了,後來被允許查資料後找到方法一(參考:和

import pymysql

def insert(table,data):

#這裡你知道table和data,其中data是乙個字典,寫插入資料庫的**

table = 'users'

# 獲取到乙個以鍵且為逗號分隔的字串,返回乙個字串

keys = ','.join(data.keys())

values = ','.join(['%s'] *len(data))

sql = 'insert into () values()'.format(table=table, keys=keys, values=values)

# 這裡的第二個引數傳入的要是乙個元組

if cursor.execute(sql, tuple(data.values())):

print('users')

db.commit()

db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='test')

cursor = db.cursor()

insert("1","2")

勉強算過,不過按大佬的說法 cursor.execute()這裡可以直接用字典為引數,面試結束後又查了一下資料(知道可以將res_sql轉換後可以把字典當做引數,而且可以用cursor.executemany()進行批量插入,**如下:

import pymysql

def insert2(table,data):

#這裡你知道table和data,其中data是乙個字典,寫插入資料庫的**

cols = ", ".join('`{}`'.format(k) for k in data.keys())

print(cols) # '`name`, `age`'

val_cols = ', '.join('%({})s'.format(k) for k in data.keys())

print(val_cols) # '%(name)s, %(age)s'

sql = "insert into users(%s) values(%s)"

res_sql = sql % (cols, val_cols)

print(res_sql) # 'insert into users(`name`, `age`) values(%(name)s, %(age)s)'

cursor.execute(res_sql, data) # 將字典data傳入

db.commit()

a = [, , ] # 拼出要插入的內容

cursor.executemany(res_sql, a)# 將字典列表a傳入

db.commit()

db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='test')

cursor = db.cursor()

insert2("1","2")

這樣寫法確實非常簡潔,而且為介面的編寫也帶來了輕便、省事,不知道多程序/執行緒時執行效率的提公升如何,以後有機會再測試吧

技術研究。侵告刪

python中的通配

通配是指一些特殊的字元,如?和 可以用他們匹配許多名稱類似的檔案,例如使用p 可以匹配所有以p開頭的檔案,使用 txt可以匹配所有以.txt結尾的檔案。使用python中的glob函式可以實現通配 import glob print glob.glob f test python txt 可以匹配所...

Python使用pymysql鏈結mysql資料庫

先安裝pymysql如下圖 author pythontab.com 可有可無 匯入pymysql的包 import pymysql try 獲取乙個資料庫連線,注意如果是utf 8型別的,需要制定資料庫 conn pymysql.connect host localhost user root p...

python 常用模組之 pymysql

demo 樣例,暫時先寫查詢的,增刪改後續再新增 無論是增刪改查,都需要先建立資料庫連線,建立游標 import pymysql 建立乙個mysql的conn,返回connetion物件 conn pymysql.connect host localhost user root passwd p s...