溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python數(shù)據(jù)庫(kù)MYSQL的用法講解

發(fā)布時(shí)間:2021-09-16 10:01:51 來(lái)源:億速云 閱讀:170 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Python數(shù)據(jù)庫(kù)MYSQL的用法講解”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Python數(shù)據(jù)庫(kù)MYSQL的用法講解”吧!

1、創(chuàng)建數(shù)據(jù)庫(kù)連接

import mysql.connector
config = {
    'host': 'localhost',
    'port': '3306',
    'user': 'root',
    'password': '',
    'database': 'python'
}
con = mysql.connector.connect(**config)
cursor = con.cursor() #游標(biāo),用于執(zhí)行sql語(yǔ)句

2、創(chuàng)建數(shù)據(jù)表

create_table_sql = "CREATE TABLE `browser` (">

3、創(chuàng)建索引

_index1 = "ALTER TABLE `browser` ADD UNIQUE INDEX name(name)" #唯一索引
_index2 = "CREATE INDEX url ON `browser`(url)" #普通索引
for sql in [_index1, _index2]:
   cursor.execute(sql)

Python數(shù)據(jù)庫(kù)MYSQL的用法講解

創(chuàng)建表結(jié)構(gòu)和添加字段索引個(gè)人建議客戶端手動(dòng)操作,一行一行代碼操作效率實(shí)在太低。這邊公眾號(hào)回復(fù)"mysql"獲取相關(guān)資源。

4、數(shù)據(jù)增刪查改

#插入單條數(shù)據(jù)
insert_sql = "INSERT INTO `browser`(name, url) VALUES (%s, %s)"
values = ('Chrome', "http://www.google.cn/chrome/")
cursor.execute(insert_sql, values) 

#插入多條數(shù)據(jù)
values = [
    ('Chrome', "http://www.google.cn/chrome/"),
    ('Firefox', "http://www.firefox.com/"),
    ('Safari2', "https://www.apple.com.cn/safari/")
]
cursor.executemany(insert_sql, values) 

#查詢數(shù)據(jù)
select_sql = "SELECT * FROM `browser`"
cursor.execute(select_sql)
print(cursor.fetchone()) #獲取單條數(shù)據(jù)
print(cursor.fetchall()) #獲取全部數(shù)據(jù)

#更新數(shù)據(jù)
update_sql = "UPDATE `browser` SET `url`='http://www.firefox.com.cn' WHERE `name`='Firefox';"
cursor.execute(update_sql)

#刪除數(shù)據(jù)
delete_sql = "DELETE FROM `browser` WHERE `name` = %s"
cursor.execute(delete_sql, ['Safari'])

5、關(guān)于抵御注入攻擊

由于Sql語(yǔ)句是解釋性語(yǔ)言,所以在拼接Sql語(yǔ)句的時(shí)候,容易被注入惡意的Sql語(yǔ)句。

sql語(yǔ)句編譯過(guò)程中,關(guān)鍵字被解析過(guò),所以向編譯后的sql語(yǔ)句傳入?yún)?shù),都被當(dāng)字符串處理,數(shù)據(jù)庫(kù)不會(huì)解析其中注入的sql語(yǔ)句。

Python數(shù)據(jù)庫(kù)MYSQL的用法講解

6、事務(wù)控制與異常處理

try:
    con.start_transaction()
    cursor = con.cursor()
    delete_sql = "DELETE FROM `browser` WHERE `name` = %s"
    cursor.execute(delete_sql, ['Firefox'])
except Exception as e:
    con.rollback() #回滾
else:
    con.commit() #提交

7、實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池

如果每次進(jìn)行操作前都去做連接請(qǐng)求,是非常消耗資源的,尤為考慮到并發(fā)問(wèn)題的時(shí)候。

數(shù)據(jù)庫(kù)連接池預(yù)先創(chuàng)建出一些數(shù)據(jù)庫(kù)連接,然后緩存起來(lái),避免出現(xiàn)重復(fù)創(chuàng)建和銷毀連接付出昂貴的代價(jià),很好的解決這個(gè)問(wèn)題。

import mysql.connector.pooling
config = {...}
pool = mysql.connector.pooling.MySQLConnectionPool(
    **config,
    pool_size=10
)
con_pool = pool.get_connection()

到此,相信大家對(duì)“Python數(shù)據(jù)庫(kù)MYSQL的用法講解”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI