Day42 python連線資料庫基礎

2022-08-29 04:18:11 字數 3228 閱讀 7221

一,python連線資料庫基本語法:

#

在pyhon程式中連線資料庫執行sql語句 -->pymysql模組

#連線資料庫,得到乙個鏈結

import

pymysql

conn =pymysql.connect(

host = '

localhost',

port = 3306,

user = '

root',

password = '

123'

, database = 'db'

, charset = '

utf8'#

不帶-)

#獲取游標物件

cursor =conn.cursor()

#得到游標語句

sql = "

select * from userinfo where username='%s' and password='%s';

" %(user,pwd);

#使用游標物件執行sql語句

ret =cursor.execute(sql)

#得到結果

print(ret) #

返回受影響行數

#關閉游標

cursor.close()

#關閉連線

conn.close()

二,sql注入相關

q1.什麼是sql注入?

使用者輸入的內容有惡意的sql語句,後端拿到使用者輸入的內容不做檢測直接做字串拼接,得到乙個和預期不一起的語句

q2.如何解決sql注入?

對使用者輸入的內容做檢測

pymysql內建了這種檢測,我們只需要讓pymysql幫我們拼接mysql語句

例:cursor.execute(sql,[name,pwd]) :讓pymysql模組幫我們拼接sql語句,執行sql語句

三,sql的增刪改操作

#

mysql增

cursor =conn.cursor()

sql = "

insert into userinfo(username, password) values (%s,%s);

"ret = cursor.execute(sql,['

eva','

456'

])conn.commit()

#針對連線提交書務,涉及運算元據庫的,一定要提交

cursor.close()

conn.close()

#mysql刪

cursor =conn.cursor()

sql = "

delete from userinfo where username=%s;

"ret = cursor.execute(sql,['

alex'])

conn.commit()

#針對連線提交書務,涉及運算元據庫的,一定要提交

cursor.close()

conn.close()

#mysql改

cursor =conn.cursor()

sql = "

update userinfo set password=%s where username=%s;

"ret = cursor.execute(sql,['

999','

boss_jin'])

conn.commit()

#針對連線提交書務,涉及運算元據庫的,一定要提交

cursor.close()

conn.close()

四,sql的查操作

#

1.返回的資料型別

#1.預設返回的都是用元組表示的

#2.返回字典型別的資料

cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

#2.常用方法

#1.fetchone

#查詢單條,多次執行現象類似生成器

#2.fetchall

#查詢全部

#高階方法:fetmany(3)

#查詢指定數量的資料

#3.回滾操作

conn.roll()

#例1:返回元組

cursor =conn.cursor()

sql = "

select * from userinfo

"cursor.execute(sql)

ret =cursor.fetchall()

print

(ret)

cursor.close()

conn.close()

#例2:返回字典

cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

sql = "

select * from userinfo

"cursor.execute(sql)

ret =cursor.fetchall()

print

(ret)

cursor.close()

conn.close()

#例3:回滾操作

cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

sql = "

insert into userinfo (username, password) values (%s,%s)

"try

: cursor.execute(sql,[

'alex

','alexsb'])

cursor.lastrowid()

#獲取插入值的id

conn.commit()

except

exception as e:

conn.rollback()

#若運算元據庫過程中發生錯誤,則回滾操作

cursor.close()

conn.close()

五,高階用法

#

游標按絕對位置移動1

cursor.scroll(1, mode="

absolute")

#游標按照相對位置(當前位置)移動1

cursor.scroll(1, mode="

relative

")

python 連線資料庫

原文 原文1 安裝mysql python pip install mysql python dome1 def db mange db bank conn none try 開啟資料庫連線 conn mysqldb.connect localhost root 123456 db bank 獲取操...

Python連線資料庫

usr bin env python coding utf 8 import sys reload sys sys.setdefaultencoding utf 8 import pymysql import pymysql.cursors usr bin env python coding utf...

python連線資料庫

1 安裝mysql ubantu下安裝不撰述 2 安裝python版本的mysql開發包 sudo apt get install python mysqldb3 編寫python usr bin python coding utf 8 import mysqldb 引入mysqldb包 開啟資料庫...