1. 程式人生 > >mysql python pymysql模塊 基本使用

mysql python pymysql模塊 基本使用

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 table
userinfo(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模塊 基本使用