做企業(yè)網(wǎng)站需要人維護(hù)么seo運(yùn)營(yíng)做什么
pandas是一個(gè)強(qiáng)大的Python工具包,能夠快速幫助我們做很多數(shù)據(jù)處理。但是在利用pandas連接數(shù)據(jù)庫(kù)時(shí),也會(huì)遇到很多問(wèn)題,在此我總結(jié)了一個(gè)相對(duì)較為簡(jiǎn)單的連接范式,供大家參考學(xué)習(xí)。
先上代碼:
import pandas as pd# 數(shù)據(jù)庫(kù)參數(shù)
MYSQL_USER = 'root'
MYSQL_PASS = '****' # 你的密碼
MYSQL_HOST = "localhost" # 你的host
MYSQL_PORT = 3306
MYSQL_CHARSET = 'utf8mb4' # 數(shù)據(jù)庫(kù)編碼格式# 數(shù)據(jù)庫(kù)名稱(chēng)
MYSQL_DATABASE = "system"import pymysql
from sqlalchemy import create_engine# url
MYSQL_DATABASE_URL = fr"mysql+pymysql://{MYSQL_USER}:{MYSQL_PASS}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}?charset={MYSQL_CHARSET}"
# 創(chuàng)建引擎
engine = create_engine(MYSQL_DATABASE_URL)# 數(shù)據(jù)庫(kù)調(diào)用函數(shù)
def access_db(sql, data=None, is_many=False):''':param sql: sql執(zhí)行語(yǔ)句:param data: 數(shù)據(jù),如果沒(méi)有數(shù)據(jù)則執(zhí)行sql代碼:param is_many: 是否為多條數(shù)據(jù):return: 查詢數(shù)據(jù)'''conn = pymysql.connect(host=MYSQL_HOST, port=MYSQL_PORT, user=MYSQL_USER,password=MYSQL_PASS, db=MYSQL_DATABASE, charset=MYSQL_CHARSET)cur = conn.cursor()if is_many:try:cur.executemany(sql, data)conn.commit()except Exception as e:print(e)conn.rollback()elif data:try:cur.execute(sql, data)conn.commit()except Exception as e:print(e)conn.rollback()else:cur.execute(sql)exe_data = cur.fetchall()conn.commit()return exe_datacur.close()conn.close()# 查詢數(shù)據(jù)
sql = "select * from user"
df_user = pd.read_sql(sql=sql, con=engine)
print(df_user)
上述代碼中用到的函數(shù),在查詢語(yǔ)句,插入語(yǔ)句(一次可插入一條或多條)等方面都可以直接調(diào)用,但需要確保sql語(yǔ)句的正確性,注意更改數(shù)據(jù)庫(kù)參數(shù)為你自己需要連接的數(shù)據(jù)庫(kù),sql建議在代碼調(diào)用前最好直接在數(shù)據(jù)庫(kù)進(jìn)行過(guò)查詢并能夠獲取到正確的數(shù)據(jù)再放入代碼層,避免因?yàn)橐恍┗菊Z(yǔ)法問(wèn)題導(dǎo)致問(wèn)題定位浪費(fèi)時(shí)間和精力。