PostgreSQL 是一個功能強大的開源對象關系型數據庫系統,他使用和擴展了SQL語言,並結合了許多安全存儲和擴展最復雜數據工作負載的功能。
PostgreSQL 的起源可以追溯到1986年,作為加州大學伯克利分校POSTGRES項目的一部分,並且在核心平台上進行了30多年的積極開發。
PostgreSQL 憑借其經過驗證的架構,可靠性,數據完整性,強大的功能集,可擴展性以及軟件背後的開源社區的奉獻精神贏得了良好的聲譽,以始終如一地提供高性能和創新的解決方案。
由於業務在做壓測時需要灌入大量的測試數據,試過很多方式都沒有很好解決,最終選擇用 Python 來實現數據灌入到 PostgreSQL,粗估數據處理效率可達6.5W/s.
代碼裡面有一個 batchs 的參數,用來控制批量插入數據庫批次,目前給的1000,效果還是十分不錯的。
代碼如下:
from openpyxl import load_workbook
import random
import psycopg2
batchs =1000
def data(datas):
conn = None
try:
conn = psycopg2.connect(database="test_62554cf827ca24dc542c4258", user="postgres", password="123456",
host="10.10.11.248", port="5432")
print("connected to postgres db successfully")
except:
print("I am unable to connect to the database")
try:
cursor = conn.cursor()
sql = "insert into t_fact_6260d12dcd211247f807e521 values " + datas+";"
print(sql)
cursor.execute(sql)
except (Exception, psycopg2.Error) as error:
print("Error caught", error)
finally:
conn.commit()
if (conn):
cursor.close()
conn.close()
def insertData():
count = 0
lw=load_workbook(r'D:\wl\bussiness_study\testdata.xlsx', read_only='read_only')
ws = lw.active
print(ws.rows)
lst=[]
strs = ""
for row in ws.rows:
count += 1
lst.append("111"+str(random.random()))
lst.append(0)
lst.append("1634745600.0")
lst.append("513567da-2d61-41db-a4cb-f2"+str(random.randint(100000000,999999999)))
for col in row:
lst.append(col.value)
print("執行第--%d--行" % (count))
# print(lst)
str2 = str(tuple(lst)).replace("None", "'None'")+","
# print(str2)
if(count%batchs==0):
strs += str2
# print(strs)
data(strs[:-1])
lst = []
strs = ""
count=0
else:
strs += str2
# print(strs)
lst=[]
str2 = ""
# print(strs)
if __name__ == '__main__':
insertData()
歡迎關注【無量測試之道】公眾號,回復【領取資源】
Python+Unittest框架API自動化、
Python+Unittest框架API自動化、
Python+Pytest框架API自動化、
Python+Pandas+Pyecharts大數據分析、
Python+Selenium框架Web的UI自動化、
Python+Appium框架APP的UI自動化、
Python編程學習資源干貨、
Vue前端組件化框架開發、
資源和代碼 免費送啦~
文章下方有公眾號二維碼,可直接微信掃一掃關注即可。
備注:我的個人公眾號已正式開通,致力於IT互聯網技術的分享。
包含:數據分析、大數據、機器學習、測試開發、API接口自動化、測試運維、UI自動化、性能測試、代碼檢測、編程技術等。
微信搜索公眾號:“無量測試之道”,或掃描下方二維碼:
添加關注,讓我們一起共同成長!