Python筑基之旅-MySQL數據庫(三)

目錄

一、數據庫操作

1、創建

1-1、用mysql-connector-python庫

1-2、用PyMySQL庫

1-3、用PeeWee庫

1-4、用SQLAlchemy庫

2、刪除

2-1、用mysql-connector-python庫

2-2、用PyMySQL庫

2-3、用PeeWee庫

2-4、用SQLAlchemy庫

二、數據表操作

1、創建

1-1、用mysql-connector-python庫

1-2、用PyMySQL庫

1-3、用PeeWee庫

1-4、用SQLAlchemy庫

2、刪除

2-1、用mysql-connector-python庫

2-2、用PyMySQL庫

2-3、用PeeWee庫

2-4、用SQLAlchemy庫

三、推薦閱讀

1、Python函數之旅

2、Python算法之旅

3、博客個人主頁
???????

一、數據庫操作

1、創建

????????現需在MySQL服務器上新建數據庫test_database;同時,在新建的數據test_database中創建數據表test_table不管是數據庫,還是數據表,若不存在,則新建

1-1、用mysql-connector-python庫
import mysql.connector
# 配置數據庫連接信息
config = {'user': 'root','password': '123456',  # 在此輸入你的MySQL密碼,請自行修改'host': '127.0.0.1','database': 'mysql'    # 如果要指定數據庫
}
# 連接到MySQL服務器
try:cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 創建新數據庫test_database(如果不存在)create_db_query = "CREATE DATABASE IF NOT EXISTS test_database"cursor.execute(create_db_query)# 切換到新數據庫use_db_query = "USE test_database"cursor.execute(use_db_query)# 創建新表test_table(如果不存在)# 假設我們有一個簡單的表,包含 id(整數,主鍵,自增)、name(字符串)和 age(整數)create_table_query = """    CREATE TABLE IF NOT EXISTS test_table (    id INT AUTO_INCREMENT PRIMARY KEY,    name VARCHAR(255) NOT NULL,    age INT    )    """cursor.execute(create_table_query)# 提交事務cnx.commit()
except mysql.connector.Error as err:print(f"Error: {err}")if cnx.is_connected():cnx.rollback()  # 如果需要回滾事務的話
finally:# 關閉游標和連接if cursor:cursor.close()if cnx.is_connected():cnx.close()
1-2、用PyMySQL庫
import pymysql
# 配置數據庫連接信息
config = {'user': 'root','password': '123456',  # 在此輸入你的MySQL密碼,請自行修改'host': '127.0.0.1','database': 'mysql'  # 如果要指定數據庫,但這里我們稍后會創建新數據庫
}
# 連接到MySQL服務器
try:# 注意:PyMySQL沒有直接使用**config的方式,需要分別傳入參數cnx = pymysql.connect(host=config['host'],user=config['user'],password=config['password'],charset='utf8mb4',  # 可選,添加字符集支持cursorclass=pymysql.cursors.DictCursor)  # 使用字典游標# 創建新數據庫test_database(如果不存在)with cnx.cursor() as cursor:create_db_query = "CREATE DATABASE IF NOT EXISTS test_database"cursor.execute(create_db_query)# 切換到新數據庫# 注意:PyMySQL沒有直接的USE語句,我們需要斷開連接并重新連接到新數據庫cnx.close()config['database'] = 'test_database'cnx = pymysql.connect(**config, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)# 創建新表test_table(如果不存在)# 假設我們有一個簡單的表,包含 id(整數,主鍵,自增)、name(字符串)和 age(整數)with cnx.cursor() as cursor:create_table_query = """  CREATE TABLE IF NOT EXISTS test_table (  id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(255) NOT NULL,  age INT  )  """cursor.execute(create_table_query)# 提交事務cnx.commit()
except pymysql.MySQLError as err:print(f"Error: {err}")if cnx:cnx.rollback()  # 如果需要回滾事務的話(但對于DDL語句,通常沒有回滾的必要)
finally:# 關閉游標和連接if cnx:cnx.close()
1-3、用PeeWee庫
from peewee import *
# 配置數據庫連接信息,這里嘗試連接到名為'mysql'的數據庫
db = MySQLDatabase('mysql', user='root', password='123456', host='127.0.0.1')
# 嘗試連接數據庫
try:db.connect()# 創建新數據庫test_database(如果不存在),這里通過執行原始SQL語句來實現db.execute_sql("CREATE DATABASE IF NOT EXISTS test_database")# 更改數據庫連接對象以連接到新創建的數據庫(或已存在的)db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')db.connect()# 定義模型(對應于數據庫表)class TestTable(Model):id = AutoField()  # 自增主鍵name = CharField(null=False)  # 字符字段,不能為空age = IntegerField(null=True)  # 整數字段,可以為空class Meta:database = db  # 指定該模型使用的數據庫連接# 自定義的創建表方法,這里實際上是覆蓋了基類Model的create_table方法# 但實際上這里不需要重新定義,因為Peewee會自動在調用create_table時處理提交事務def create_table(cls, fail_silently=False, **options):super(TestTable, cls).create_table(fail_silently, **options)db.commit()  # 這里提交事務其實是不必要的,因為Peewee默認會處理# 調用自定義的create_table方法來創建表(如果不存在)# 但通常我們會直接調用 TestTable.create_table() 而無需修改它TestTable.create_table()
except Exception as e:print(f"Error: {e}")# 如果連接已關閉,這里的關閉操作是多余的,因為db.close()在連接關閉時不會引發錯誤if db.is_closed():db.close()  # 實際上,這里的檢查是多余的,因為db在異常發生前應該是打開的else:db.rollback()  # 如果有事務在執行并且需要回滾的話(但在這個場景中,通常沒有顯式開啟的事務)
finally:# 無論是否發生異常,都要確保數據庫連接被關閉if not db.is_closed():db.close()
1-4、用SQLAlchemy庫
略,該庫本身不支持直接創建數據庫,需要借助其他第三方庫,如PyMySQL

2、刪除

????????現需在MySQL服務器上刪除已有數據庫test_database,以下為借助第三方庫實現:

2-1、用mysql-connector-python庫
import mysql.connector
# MySQL服務器連接參數
config = {'user': 'root','password': '123456',  # 在此輸入你的MySQL密碼,請自行修改'host': '127.0.0.1','database': 'mysql'    # 如果要指定數據庫
}
# 連接到MySQL服務器
try:connection = mysql.connector.connect(**config)cursor = connection.cursor()# 執行SQL語句來刪除test_database數據庫sql = "DROP DATABASE IF EXISTS test_database"cursor.execute(sql)# 提交事務connection.commit()print("Database test_database deleted successfully.")
except mysql.connector.Error as error:print(f"Error: '{error}'")
finally:# 關閉游標和連接if connection.is_connected():cursor.close()connection.close()
2-2、用PyMySQL庫
import pymysql
# MySQL服務器連接參數
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 替換為你的MySQL服務器地址'port': 3306,  # 如果你的MySQL不是默認端口,需要指定'charset': 'utf8mb4',  # 設置字符集'cursorclass': pymysql.cursors.DictCursor  # 使用字典游標,這不是必需的
}
# 連接到MySQL服務器(注意這里我們沒有指定database參數)
try:# 因為我們要刪除數據庫,所以不需要連接到特定的數據庫connection = pymysql.connect(**{k: v for k, v in config.items() if k != 'database'})with connection.cursor() as cursor:# 執行SQL語句來刪除test_database數據庫sql = "DROP DATABASE IF EXISTS test_database"cursor.execute(sql)# 提交事務,可省略connection.commit()print("Database test_database deleted successfully.")
except pymysql.MySQLError as error:print(f"Error: '{error}'")
finally:# 關閉連接if connection:connection.close()
2-3、用PeeWee庫
略,該庫本身不支持直接刪除數據庫,需要借助其他第三方庫,如PyMySQL
2-4、用SQLAlchemy庫
略,該庫本身不支持直接刪除數據庫,需要借助其他第三方庫,如PyMySQL

二、數據表操作

1、創建

????????在MySQL服務器上已有數據庫test_database,需在該數據庫中創建數據表myelsa_table,以下為借助第三方庫實現:

1-1、用mysql-connector-python庫
import mysql.connector
# 數據庫連接配置
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 如果數據庫在遠程服務器上,請替換為相應的主機名或IP地址'database': 'test_database',  # 數據庫名'raise_on_warnings': True
}
# 連接到數據庫
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
# 創建數據表的SQL語句
create_table_query = """  
CREATE TABLE IF NOT EXISTS myelsa_table (  name VARCHAR(255) NOT NULL, ID_Card VARCHAR(255) NOT NULL, age INT NOT NULL,  city VARCHAR(255) NOT NULL,  PRIMARY KEY (ID_Card)  -- 如果ID_Card字段是唯一的,可以設為主鍵,否則可以移除這行  
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;  
"""
# 執行SQL語句
cursor.execute(create_table_query)
# 提交更改(如果使用了事務)
cnx.commit()
# 關閉連接
cursor.close()
cnx.close()
print("Table myelsa_table created successfully!")
1-2、用PyMySQL庫
import pymysql
# 數據庫連接配置
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 如果數據庫在遠程服務器上,請替換為相應的主機名或IP地址'database': 'test_database',  # 數據庫名'charset': 'utf8mb4',  # 字符集設置'cursorclass': pymysql.cursors.DictCursor  # 使用字典游標
}
# 連接到數據庫
connection = pymysql.connect(**config)
try:with connection.cursor() as cursor:# 創建數據表的SQL語句create_table_query = """    CREATE TABLE IF NOT EXISTS myelsa_table (    name VARCHAR(255) NOT NULL,   ID_Card VARCHAR(255) NOT NULL,   age INT NOT NULL,    city VARCHAR(255) NOT NULL,    PRIMARY KEY (ID_Card)  -- 如果ID_Card字段是唯一的,可以設為主鍵  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;    """# 執行SQL語句cursor.execute(create_table_query)# 提交更改(對于自動提交模式,這一步可能不是必須的)connection.commit()
finally:connection.close()print("Table myelsa_table created successfully!")
1-3、用PeeWee庫
from peewee import *
# 數據庫連接配置
db = MySQLDatabase('test_database', user='root', password='123456', host='127.0.0.1')
# 定義模型
class MyElsaTable(Model):name = CharField(max_length=255, null=False)ID_Card = CharField(max_length=255, unique=True)  # 假設ID_Card是唯一的age = IntegerField(null=False)city = CharField(max_length=255, null=False)class Meta:database = db
# 連接到數據庫
db.connect()
# 創建表(如果表不存在)
db.create_tables([MyElsaTable])
# 關閉數據庫連接(在 Peewee 中,通常不需要顯式關閉連接,因為它會自動管理連接池)
db.close()
print("Table myelsa_table created successfully!")
1-4、用SQLAlchemy庫
from sqlalchemy import create_engine, Column, Integer, String, MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 數據庫連接配置(使用 SQLAlchemy 的 URI 格式)
DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1/test_database?charset=utf8mb4'
# 創建一個引擎實例
engine = create_engine(DATABASE_URI, echo=True)  # echo=True 用于顯示生成的 SQL 語句,調試時可以打開
# 創建基類
Base = declarative_base()
# 定義模型類
class MyElsaTable(Base):__tablename__ = 'myelsa_table'name = Column(String(255), nullable=False)ID_Card = Column(String(255), primary_key=True)  # 設置為主鍵age = Column(Integer, nullable=False)city = Column(String(255), nullable=False)
# 創建表(如果表不存在)
Base.metadata.create_all(engine)
# 如果你想要使用 ORM 來進行操作,可以創建一個 session 類
Session = sessionmaker(bind=engine)
session = Session()
# 這里不需要執行 SQL 語句或提交更改,因為 create_all 方法會自動處理
# 關閉 session(如果需要的話,但在這種情況下我們并沒有進行任何 ORM 操作)
# session.close()
print("Table myelsa_table created successfully!")

2、刪除

????????在MySQL服務器上已有數據庫test_database,且該數據庫下已有數據表myelsa_table,現需刪除數據表myelsa_table,以下為借助第三方庫實現:

2-1、用mysql-connector-python庫
import mysql.connector
# 數據庫連接配置
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 如果數據庫在遠程服務器上,請替換為相應的主機名或IP地址'database': 'test_database',  # 數據庫名
}
try:# 連接到數據庫cnx = mysql.connector.connect(**config)cursor = cnx.cursor()# 執行SQL語句來刪除表drop_table_query = "DROP TABLE IF EXISTS myelsa_table;"cursor.execute(drop_table_query)# 提交更改(在這個例子中,刪除表不需要顯式提交,因為不是事務的一部分)# 但如果你之前做了其他更改,這里可以調用cnx.commit()print("Table myelsa_table deleted successfully!")
except mysql.connector.Error as err:print(f"Error: '{err}'")
finally:# 關閉游標和連接if cursor:cursor.close()if cnx.is_connected():cnx.close()
2-2、用PyMySQL庫
import pymysql
# 數據庫連接配置
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 如果數據庫在遠程服務器上,請替換為相應的主機名或IP地址'database': 'test_database',  # 數據庫名'charset': 'utf8mb4',  # 設置字符集,可選'cursorclass': pymysql.cursors.DictCursor  # 使用字典游標,可選
}
try:# 連接到數據庫connection = pymysql.connect(**config)with connection.cursor() as cursor:# 執行SQL語句來刪除表drop_table_query = "DROP TABLE IF EXISTS myelsa_table;"cursor.execute(drop_table_query)# 提交更改(在這個例子中,刪除表不需要顯式提交,因為不是事務的一部分)# 但如果你之前做了其他更改,并且它們是在一個事務中,這里可以調用 connection.commit()print("Table myelsa_table deleted successfully!")
except pymysql.MySQLError as err:print(f"Error: '{err}'")
finally:# 關閉連接if connection.open:connection.close()
2-3、用PeeWee庫
# 注意,這里需要借助擴展庫peewee-mysql,需提前安裝
from peewee import *
# 數據庫連接配置  
db = MySQLDatabase('test_database',user='root',password='123456',host='127.0.0.1'
)
try:# 連接到數據庫  db.connect()# 創建一個用于執行原始 SQL 的游標  db.execute_sql("DROP TABLE IF EXISTS myelsa_table;")# Peewee 沒有直接的“提交”操作,因為對于 DDL(數據定義語言)語句如 DROP TABLE,  # 它們通常是立即執行的,不需要事務提交。  print("Table myelsa_table deleted successfully!")
except peewee.OperationalError as e:print(f"Error: '{e}'")
finally:# 關閉數據庫連接  db.close()
2-4、用SQLAlchemy庫
from sqlalchemy import create_engine, MetaData, Table
# 數據庫連接配置
config = {'user': 'root',  # 替換為你的MySQL用戶名'password': '123456',  # 替換為你的MySQL密碼'host': '127.0.0.1',  # 如果數據庫在遠程服務器上,請替換為相應的主機名或IP地址'database': 'test_database',  # 數據庫名'dialect': 'mysql'  # 使用mysql方言
}
# 創建連接字符串
connection_string = f"{config['dialect']}+pymysql://{config['user']}:{config['password']}@{config['host']}/{config['database']}"
try:# 創建引擎engine = create_engine(connection_string)# 使用引擎連接到數據庫with engine.connect() as conn:# 創建元數據對象metadata = MetaData()# 定義要刪除的表(如果已知表結構,可以創建完整的 Table 對象)# 但為了簡單地刪除表,我們只需要表名table_name = 'myelsa_table'# 使用 SQLAlchemy 的反射機制來獲取 Table 對象(如果需要)# 這里我們直接執行原始 SQL 語句來刪除表# 執行SQL語句來刪除表drop_table_query = f"DROP TABLE IF EXISTS {table_name};"conn.execute(drop_table_query)print("Table myelsa_table deleted successfully!")
except Exception as e:print(f"Error: '{e}'")# 在 with 語句結束后,連接會自動關閉,所以不需要顯式關閉連接

三、推薦閱讀

1、Python函數之旅

2、Python算法之旅

3、博客個人主頁

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14320.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

38. 外觀數列 - 力扣(LeetCode)

基礎知識要求: Java:方法、for循環、if eles語句、StringBuilder類 Python: 方法、for循環、if else語句、字符串拼接 題目: 「外觀數列」是一個數位字符串序列,由遞歸公式定義: countAndSay(1) "…

記錄Python低代碼開發框架zdppy_amcrud的開發過程

實現新增接口 基礎代碼 import env import mcrud import api import snowflakeenv.load(".env") db mcrud.new_env()table "user" columns ["name", "age"]async def add_user(req):data await api.req.get_json(req)values [d…

SkyEye對接CANoe:助力汽車軟件功能驗證

01.簡介 CANoe(CAN open environment)是德國Vector公司專為汽車總線設計而開發的一款通用開發環境,作為車載網絡和ECU開發、測試和分析的專業工具,支持從需求分析到系統實現的整個系統的開發過程。CANoe豐富的功能和配置選項被OE…

虛擬ECU:徹底改變汽車軟件開發與測試

汽車開發領域有著垂直性較強的一系列需求,其中最為矚目的需求之一就是對安全高效的軟件測試方法的需求。傳統的汽車開發偏向使用硬件原型與真實ECU進行軟件測試,但由于硬件設備往往在開發周期的中后階段才生產完成,給汽車開發帶來了成本與時間…

理解Solidity 中的 tx.origin 和 msg.sender

開發者需要了解在Solidity中tx.origin和msg.sender的區別。這兩個全局變量經常被混淆,盡管它們之間有著根本的不同。雖然乍一看它們可能相似,但在交易的上下文中,tx.origin和msg.sender代表不同的地址。在這篇博客文章中,我們將深…

spring boot 之 事務

內容是小老弟的一些整理和個人思考總結,知識的海洋那么大,有錯誤的話還請諸位大佬指點一下! 事務是一個不可分割操作序列,也是數據庫并發控制的基本單位,其執行的結果必須使數據庫從一種一致性狀態變到另一種一致性狀…

電商內卷時代,視頻號小店憑借一己之力“脫穎而出”

大家好,我是電商笨笨熊 今年618各大電商平臺花樣百出; 某寶更是直接取消了“預售”,從5月就開始進入618預熱期; 不少玩家既開心又難過,市場如此內卷,618確實是個爆發期,但更多的需要不斷壓低…

Star CCM+分配零部件至區域后交界面丟失-更新找回

前言 在工程應用中,將零部件分配至區域后,一般常規的操作需要對交界面進行檢查。偶爾會發現交界面丟失。遇到此類問題,在沒有做其他操作前(比如畫網格),可以選擇先刪除所有區域在重新分配至區域。若已經進…

基于SSM的大學生兼職管理系統

基于SSM的大學生兼職管理系統的設計與實現~ 開發語言:Java數據庫:MySQL技術:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系統展示 登錄界面 企業界面 前臺學生界面 管理員界面 摘要 隨著大學生兼職市場的日益繁…

K8s 高級調度

文章目錄 K8s 高級調度CronJobinitContainerTaint 和 Toleration污點(Taint)容忍(Toleration) AffinityNodeAffinityPodAnffinity 和 PodAntiAffinity 總結 K8s 高級調度 CronJob 在 k8s 中周期性運行計劃任務,與 li…

【vue echart】完成一個簡單echart圖表+自適應

實現效果&#xff1a; html&#xff1a; <divref"echartOne"id"echartOne"style"width: 100%; height: 100%" ></div> js: getEchartOne() {let chart this.$echarts.init(this.$refs.echartOne);chart.setOption({title: {text:…

linux 有名管道FIFO

無名管道應用的一個重大限制是它沒有名字&#xff0c;因此&#xff0c;只能用于具有親緣關系的進程間通信&#xff0c;在有名管道&#xff08;named pipe或FIFO&#xff09;提出后&#xff0c;該限制得到了克服。FIFO不同于管道之處在于它提供一個路徑名與之關聯&#xff0c;以…

云原生|為什么服務網格能夠輕松重塑微服務?一文講清楚!

目錄 一、概述 二、 設計 三、服務網格 四、總結 一、概述 容器化技術與容器編排推動了微服務架構應用的演進&#xff0c;于是應用的擴展與微服務的數量日益增加&#xff0c;新的問題隨之而來&#xff0c;監控服務的性能變得越來越困難&#xff0c;微服務與微服務之間相互通…

v-rep--lua接口和c++接口的關聯

我們在coppeliasim中調用的lua腳本函數sim.xxxxx()的執行規律有兩種情況&#xff1a; 1&#xff0c;要么就是在coppliasim的sim.lua中有這個lua函數的定義&#xff0c;直接執行這個lua函數即可。比如&#xff0c;sim.creatPath(); 2&#xff0c;要么就是這個lua接口沒有lua語…

Kafka-集群管理者(Controller)選舉機制、任期(epoch)機制

Kafka概述 Kafka-集群管理者&#xff08;Controller&#xff09;選舉機制 Kafka中的Controller是Kafka集群中的一個特殊角色&#xff0c;負責對整個集群進行管理和協調。Controller的主要職責包括分區分配、副本管理、Leader選舉等。當當前的Controller節點失效或需要進行重新…

嵌入式實時操作系統筆記1:RTOS入門_理解簡單的OS系統

今日開始學習嵌入式實時操作系統RTOS&#xff1a;UCOS-III實時操作系統 本次目標是入門RTOS&#xff0c;理解多任務系統...... 本文只是個人學習筆記&#xff0c;基本都是對網上資料的整合...... 目錄 STM32裸機與RTOS區別&#xff1a; 裸機中斷示例&#xff1a; RTOS對優先級…

汽車標定技術(二十一)--英飛凌TC3xx的OLDA怎么玩?(2)

目錄 1.概述 2.Vector提出的OLDA概念 2.1 RAM Copy 2.2 Data Trace 3.小結 1.概述 上一篇汽車標定技術(二十一)--英飛凌TC3xx的OLDA怎么玩?(1)-CSDN博客,我們講了TC3xx

Spring MVC/Web

1.Spring MVC 的介紹 Spring Web MVC是基于Servlet API構建的原始Web框架&#xff0c;也是Spring框架的一部分。它提供了靈活可擴展的MVC架構&#xff0c;方便開發者構建高性能的Web應用程序&#xff0c;并與 Spring 生態系統無縫集成。 2.MVC 設計模式 MVC&#xff08;Model…

設計模式—23種設計模式重點 表格梳理

設計模式的核心在于提供了相關的問題的解決方案&#xff0c;使得人們可以更加簡單方便的復用成功的設計和體系結構。 按照設計模式的目的可以分為三大類。創建型模式與對象的創建有關&#xff1b;結構型模式處理類或對象的組合&#xff1b;行為型模式對類或對象怎樣交互和怎樣…

CSS實現圖片浮動在底層 div 之上,而不會影響底層 div 的布局和內容

前言&#xff1a;遇到個需求&#xff0c;需要圖片顯示在div之上&#xff0c;但是不占用div的空間布局&#xff0c;網上的答案五花八門&#xff0c;但其實使用css就可以簡單實現&#xff0c;僅以此博客作為記錄 舉個栗子 <div class"container"><img src&qu…