pycharm對mySQL的操作

2021-08-31 06:50:48 字數 2999 閱讀 4357

好久沒記錄了,這段時間頹廢了啊。

進度緩慢。得抓緊咯~

這兩天又說要做spring boot

我滴個乖乖,我從來沒有接觸過啊。。

慢慢來吧。提高自己的泛用性。

pycharm 其實對資料庫操作的工作就兩部分。

只爭朝夕,pycharm 是只管朝夕

朝:

from pymysql import *

conn = connect(host='localhost',port=3306,user='root',passwd='設定的密碼',db='資料庫名稱',charset='utf8')

cursor = conn.cursor()

夕:

conn.commit() (查詢不需要提交)

cursor.close()

conn.close()

至於中間你想幹啥,隨你咯(滑稽)

sqlstr =『你想幹的事兒』

cursor.execute(sqlstr)

基礎操作到此結束。

q1:關於新建資料庫

a1:安裝好mysql後,配置其bin目錄到使用者環境變數path中

開啟命令列,利用如下**進行資料庫建立

#進入mysql

mysql -uroot -p

輸入安裝mysql時候的root密碼

#建立資料庫

create database 資料庫名稱 charset='utf8';

q2:咋安裝pymysql?

q3:命令列 pip install pymysql 就可以了,想看看自己都安裝了什麼外掛程式,pip list 就可以看到了

q3:import pymysql這句話出錯了啊?

a3:因為我公升級python3.63到python3.64了(竟然不覆蓋,兩個版本共存了),所以導致識別不了安裝的pymysql,在pycharm中file/setting中搜尋project interpreter,把編譯器版本選擇對了就會出現外掛程式列表,當然不用pip安裝pymysql也是可以的用,外掛程式列表右上角有 「+」 利用它也可以安裝的。

如果訪問資料庫的時候將引數寫在sql中,就容易收到資料庫攻擊(sql注入),如:

select * from students where name = 」

傳來的引數為 a』 or 1=1 or 』

拼接後為:

select * from students where name = 『a』 or 1=1 or 」

那where還有意義麼?

為了讓sql語句執行更加安全,我們就要進行引數化操作。

sqlstr = 『select * from students where name = %s』

params = [sname]

result = cursor.execute(sqlstr,params)

這樣安全地得到了同樣的結果。

每次操作都需要朝夕,那我們就要進行封裝,提高程式的復用率。

from pymysql import *

class

mysqlhelper:

def__init__

(self, host, port, db, user, passwd, charset='utf8'):

self.host = host

self.port = port

self.db = db

self.user = user

self.passwd = passwd

self.charset = charset

defopen

(self):

self.conn = connect(host=self.host,

port=self.port,

user=self.user,

passwd=self.passwd,

db=self.db,

charset=self.charset)

self.cursor = self.conn.cursor()

defclose

(self):

self.cursor.close()

self.conn.close()

defcud(self, sql, params):

try:

self.open()

self.cursor.execute(sql, params)

self.conn.commit()

self.close()

except exception as e:

print(e)

defall(self, sql, params=):

try:

self.open()

self.cursor.execute(sql, params)

result = self.cursor.fetchall()

self.close()

return result

except exception as e:

print(e)

檢視以上**,我們只需要進行cud與all的呼叫就可以獲得想要的結果。

物件導向,就是把事務交給某個物件去做,不關心他內部是如何實現的。(當然如果這個物件要自己構造的話,那必須的明白其中的道理)

呼叫過程:

name = input("請輸入賬戶:")

params = [name]

sql = 'select * from users where name = %s'

helper = mysqlhelper('localhost', 3306, 'users', 'root', '密碼')

result = helper.all(sql, params)

WEBFOCUS 對TABLE FILE的操作

table file customer test print field name a30 field desc a30 where customer key eq custkey on table hold as custudfsetup format alpha end run 讀取custom...

Extjs gridPanel對選中行的操作

extjs gridpanel 操作行 得到選中行的列 varmodel grid.getselectionmodel model.selectall 選擇所有行 model.selectfirstrow 選擇第一行 model.selectlastrow flag 選擇最後一行,flag為正的話保...

python對memcached的簡單操作

python memcached模組原生支援集群操作,其原理是在記憶體維護乙個主機列表,且集群中主機的權重值和主機在列表中重複出現的次數成正比。主機 權重 1.1.1.1 11.1 1.2 21.1 1.31 那麼在記憶體中主機列表為 host list 1.1.1.1 1.1.1.2 1.1.1....