mysql python pymysql模塊 基本使用
阿新 • • 發佈:2018-11-09
bsp 命令 font use not odi 輸入 mys lse
我們都是通過MySQL自帶的命令行客戶端工具mysql來操作數據庫,那如何在python程序中操作數據庫呢?
這就用到了pymysql模塊,該模塊本質就是一個套接字客戶端軟件,使用前需要事先安裝
pip3 install pymysql
mysql 服務端ip = 192.168.0.106
我自己電腦 192.168.0.105
創建數據庫db10
mysql> create database db10 charset=utf8; Query OK, 1 row affected (0.12 sec)
use db10;
創建表
mysql> create tableuserinfo(id int not null primary key auto_increment,name varchar(50) not null,pwd varchar(50) nott null); Query OK, 0 rows affected (0.39 sec)
插入表
mysql> insert into userinfo(name,pwd) values(‘mike‘,‘123‘),(‘jack‘,‘456‘); Query OK, 2 rows affected (0.19 sec) Records: 2 Duplicates: 0 Warnings: 0
用戶信息表創建好了
mysql> select * from userinfo; +----+------+-----+ | id | name | pwd | +----+------+-----+ | 1 | mike | 123 | | 2 | jack | 456 | +----+------+-----+ 2 rows in set (0.00 sec)
授權
mysql> grant all on *.* to ‘root‘@‘192.168.0.105‘ identified by ‘123‘; Query OK, 0 rows affected (0.15 sec)mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
遊標就是登錄進入mysql的命令行的光標
遊標是給mysql提交命令的接口
mysql>
# 拿到遊標對象
cur = conn.cursor()
遊標是給mysql提交命令的接口
mysql>
把sql語句傳遞到這裏
rows = cur.execute(sql)
execute拿到結果 不是 我mysql查詢的結果,而是
紅色 2 的結果 代表拿到2行結果
select * from userinfo; +----+------+-----+ | id | name | pwd | +----+------+-----+ | 1 | mike | 123 | | 2 | jack | 456 | +----+------+-----+ 2 rows in set (0.00 sec)
如果綠色的值 不為0 代表 我輸入的賬號和密碼都輸入正確了
執行完sql語句要關閉遊標和mysql連接
完整代碼
import pymysql input_user = input(‘usr>>>:‘).strip() input_pwd = input(‘pwd>>>:‘).strip() mysql_host = ‘192.168.0.106‘ port = 3306 mysql_user = ‘root‘ mysql_pwd = ‘123‘ encoding = ‘utf8‘ # 建立 連接mysql服務端 conn = pymysql.connect( host=mysql_host, # mysql服務端ip port=port, # mysql端口 user=mysql_user, # mysql 賬號 password=mysql_pwd, # mysql服務端密碼 db=‘db10‘, # 操作的庫 charset=encoding # 讀取字符串編碼 ) # 拿到遊標對象 cur = conn.cursor() ‘‘‘ 遊標是給mysql提交命令的接口 mysql> 把sql語句傳遞到這裏 ‘‘‘ # 執行sql語句 ‘‘‘ 執行sql語句之前應該根據我輸入的用戶名和密碼,到數據庫裏面的表裏 查有沒有我輸入的用戶名和密碼 ‘‘‘ # 寫一條sql語句往後臺去查 # 註意%s需要加引號 sql= ‘select * from userinfo where name="%s" and pwd="%s"; ‘%(input_user, input_pwd) ‘‘‘ 如果這條sql語句能夠查出結果,我輸入的賬號和密碼,數據庫是存在的 證明我輸入的賬號和密碼是對的 如果執行sql語句 沒有結果就是數據庫沒有我輸入的賬號和密碼 ‘‘‘ # 把sql語句傳給遊標執行 rows = cur.execute(sql) # #執行sql語句,返回sql查詢成功的記錄數目 # 執行完sql語句要關閉遊標和mysql連接 cur.close() conn.close() # 進行判斷 if rows: print("登錄成功") else: print("登錄失敗") ‘‘‘ usr>>>:xxx pwd>>>:123 登錄失敗 ‘‘‘ ‘‘‘ usr>>>:mike pwd>>>:123 登錄成功 ‘‘‘
如果mysql部署在centos 記得把 iptables 加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
還有selinux 關掉
mysql python pymysql模塊 基本使用