1. 程式人生 > 實用技巧 >Python訪問資料庫

Python訪問資料庫

Python訪問資料庫

本文案例基於runoob資料庫下,51job表演示

1.MySQL的連線

import pymysql

# 開啟資料庫連線
db = pymysql.connect("localhost", "root", "123456", "runoob")

# 使用 cursor() 方法建立一個遊標物件 cursor
cursor = db.cursor()

# 使用 execute() 方法執行 SQL,如果表存在則刪除
cursor.execute("DROP TABLE IF EXISTS employee")

# 使用預處理語句建立表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

# 關閉資料庫連線
db.close()

2.插入資料

from config import get_connect
connect=get_connect('runoob')

cursor=connect.cursor()

# 執行SQl語句
result=cursor.execute("insert into websites values (7,'秋弦','https://www.cnblogs.com/James-221',4,'China')")
# 如果SQl語句是新增
result=connect.commit()
print('成功插入',cursor.rowcount,'條資料')

3.修改資料

from config import get_connect
connect=get_connect('runoob')

cursor=connect.cursor()

# 執行SQl語句
result=cursor.execute("update websites set alexa=2 where id=1")
# 如果SQl語句是新增
connect.commit()
print('成功修改',cursor.rowcount,'條資料')

4.刪除資料

from config import get_connect
connect=get_connect('runoob')

cursor=connect.cursor()

# 執行SQl語句
result=cursor.execute("delete from websites where id=7")
# 如果SQl語句是新增
connect.commit()
print('成功刪除',cursor.rowcount,'條資料')

5.查詢資料

from config import get_connect
connect=get_connect('runoob')

cursor=connect.cursor()

# 執行SQl語句
result=cursor.execute("select * from websites")
# 如果SQl語句是新增
result=connect.commit()
for row in cursor.fetchall():
    print(row)
print('共查出',cursor.rowcount,'條資料')

6.基本操作

import pymysql
from config import get_connect
connect=get_connect('job')
print('資料庫連線成功')

# 獲取遊標物件,遊標物件可以將SQL語句傳送到mysql資料庫並執行
cursor=connect.cursor()
# 執行SQl語句
result=cursor.execute('select * from 51job')

# print(type(result))
# print(result)

# 從遊標物件中獲取一條資料
# data=cursor.fetchone()
# print(data)

# 從遊標物件中獲取10條資料
# data=cursor.fetchmany(10)
# for row in data:
#     print(row)

# 獲取所有資料
# data=cursor.fetchall()
# print(len(data))

# 資料庫連線結束後,關閉遊標和連線
cursor.closo()
connect.close()

案例:

題目需求:

檔案操作+資料庫練習

1)使用pymsql建立資料庫和資料表,庫名稱:test,表名稱:51job2)使用任意可用與解析excel檔案的模組,解析51job.xls
3)使用pymysql將51job.xls中的資料新增到test.5ljob表中
4)使用pymysql查詢test.51job中的所有資料,篩選出位於”上海-浦東新區”的所有工作崗位

1.建立一個配置檔案config.py

import pymysql
HOST='localhost'
USER='root'
PWD='123456'

def get_connect(db):
    connect=pymysql.connect(host=HOST,
                            user=USER,
                            password=PWD,
                            db=db)
    return connect

2.demo.py

# 讀取F:\\Python資料\\51job.xls檔案內容後,將需要到欄位資訊(jobName,company,location,salary,postDate)存入mysql資料庫例項,最終記得要關資料庫和連線哦!
# 讀取excel表的內容然後寫入資料庫
import xlrd,pymysql
from config import get_connect
# 連線的資料庫
conn = get_connect('runoob')
def insert():
# 獲取遊標物件
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    sql = "insert into 51job (jobName,company,location,salary,postDate) values (%s,%s,%s,%s,%s)"
    # 開啟檔案
    file = xlrd.open_workbook("F:\\Python資料\\51job.xls")
    sheet_1 = file.sheet_by_index(0) # 根據sheet頁的排序選取sheet
    row_content = sheet_1.row_values(0) # 獲取指定行的資料,返回列表,排序自0開始
    row_number = sheet_1.nrows # 獲取有資料的最大行數
# 從第一行開始遍歷
    for i in range(1,row_number):
    #
        jobName = sheet_1.cell(i,0).value
        company = sheet_1.cell(i,1).value
        location = sheet_1.cell(i,2).value
        salary = sheet_1.cell(i,3).value
        postDate = sheet_1.cell(i,4).value
        values = (jobName,company,location,salary,postDate)
    # 執行sql語句插入資料
        cursor.execute(sql,values)
        conn.commit()

    # 關必遊標
    cursor.close()
    # 關閉連線
    conn.close()
insert()

# 查詢地址在上海-浦東新區的資料
def select():
    connect = get_connect('runoob')
    cursor = connect.cursor()
    # 執行SQl語句
    result = cursor.execute("select * from 51job where location like '%上海-浦東新區'")
    # 如果SQl語句是新增
    result = connect.commit()
    for row in cursor.fetchall():
        print(row)
    print('共查出', cursor.rowcount, '條資料')
select()