day 61 pymysql

Python3鏈接MySQL

本文介紹Python3鏈接MySQL的第三方庫--PyMySQL的基本使用。mysql

PyMySQL介紹

PyMySQL 是在 Python3.x 版本中用於鏈接 MySQL 服務器的一個庫,Python2中則使用mysqldb。sql

Django中也能夠使用PyMySQL鏈接MySQL數據庫。數據庫

PyMySQL安裝

pip install pymysql

鏈接數據庫

注意事項

在進行本文如下內容以前須要注意:服務器

  • 你有一個MySQL數據庫,而且已經啓動。
  • 你有能夠鏈接該數據庫的用戶名和密碼
  • 你有一個有權限操做的database

基本使用# 導入pymysql模塊

import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址 localhost等」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
# 定義要執行的SQL語句
sql = "select * from ren where name='alex'" CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT
NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉光標對象 cursor.close() # 關閉數據庫鏈接 conn.close()

登陸代碼

有問題的代碼fetch

import pymysql
name=input('name:')
psw=input('psw:')
conn=pymysql.connect(host= "localhost",database="db2",user="root",password="123456",charset='utf8')
cursor=conn.cursor()
# sql='select * from s8 WHERE name="%s" and psw="%s";'%(name,psw)
# 必定要認真
sql = "select * from s8 WHERE name='%s' and psw='%s';"%(name, psw)
print(sql)
ret=cursor.execute(sql)

print(ret)
# 這個返回的是行數,若是行數爲1證實找到了對應的信息,不然爲沒有
cursor.close()
conn.close()
if ret==1:
    print('登陸成功')
else:print('登陸失敗')

注意 這種形式的有BUG 在name處輸入 alex' -- hehe 不用輸入密碼就能直接登陸

 

增刪改查操做

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
    # 執行SQL語句
    cursor.execute(sql, [username, age])
    # 提交事務
    conn.commit()
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()
複製代碼

獲取插入數據的ID(關聯操做時會用到)
spa

 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
    # 執行SQL語句
    cursor.execute(sql, [username, age])
    # 提交事務
    conn.commit()
    # 提交以後,獲取剛插入的數據的ID
    last_id = cursor.lastrowid
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()

批量執行code

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)]
try:
    # 批量執行多條插入SQL語句
    cursor.executemany(sql, data)
    # 提交事務
    conn.commit()
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:
    cursor.execute(sql, [4])
    # 提交事務
    conn.commit()
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
# 修改數據的SQL語句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
age = 80
try:
    # 執行SQL語句
    cursor.execute(sql, [age, username])   也能夠寫成小括號
    # 提交事務
    conn.commit()
except Exception as e:
    # 有異常,回滾事務
    conn.rollback()
cursor.close()
conn.close()

查詢單條數據對象

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取單條查詢數據
ret = cursor.fetchone()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)

查詢多條數據blog

# 導入pymysql模塊
import pymysql
# 鏈接database
conn = pymysql.connect(host=「你的數據庫地址」, user=「用戶名」,password=「密碼」,database=「數據庫名」,charset=「utf8」)
# 獲得一個能夠執行SQL語句的光標對象
cursor = conn.cursor()
# 查詢數據的SQL語句
sql = "SELECT id,name,age from USER1;"
# 執行SQL語句
cursor.execute(sql)
# 獲取多條查詢數據
ret = cursor.fetchall()
cursor.close()
conn.close()
# 打印下查詢結果
print(ret)

 進階用法

# 能夠獲取指定數量的數據
cursor.fetctmany(3)
# 光標按絕對位置移動1
cursor.scroll(1, mode="absolute")
# 光標按照相對位置(當前位置)移動1
cursor.scroll(1, mode="relative")
相關文章
相關標籤/搜索