程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

實習手冊四(Python基於Tornado框架的接口響應服務)通過PyMySQL,SQLAlchemy在PyCharm中實現對數據的增刪改查

編輯:Python

目錄

前言

PyMySQL

SQLAlchemy

總結


前言

手冊目錄:

軟件下載及環境安裝:

實習手冊一(基於Tornado框架的接口響應服務)軟件下載與環境配置

Tornado基本框架搭建:

實習手冊二(基於Tornado框架的接口響應服務)Tornado基本框架的搭建

Tornado框架中日志的記錄,路由的分發,接口的響應:

實習手冊三(基於Tornado框架的接口響應服務)Tornado框架中日志的記錄,路由的分發,接口的響應     

本章目標:通過PyMySQL,SQLAlchemy在PyCharm中實現對數據的增刪改查

在使用python中的pymysql和sqlalchemy包來對數據庫進行處理時,需要確保你的mysql服務處於開啟狀態(如何開啟數據庫可以查看實習手冊一),並且通過navicat of mysql建立的連接能夠成功連接到mysql服務。

使用navicat of mysql建立數據庫連接的步驟如下:

1、新建連接

點擊navicat界面左上方的Connection,選擇MySQL

隨後進入連接配置界面:

 

在配置界面中,你可以設置連接的名字,端口號,host等,Password就是你mysql服務的密碼,配置好後可以先點擊Test Connection來測試連接能否成功,測試連接成功後點擊Save即可保存連接

2、開啟連接,建立新的數據庫和新的表

在navicat中,雙擊你保存的連接即可開啟,前提是你在配置連接時勾選了Save password。

等待連接的圖標由灰色變為綠色,便可以通過連接來對數據庫進行操作了,這裡我們需要新建一個用於測試的數據庫,對連接點擊鼠標右鍵,選中New Database。

然後對你的數據庫命名後點擊OK即可創建新的數據庫,然後雙擊數據庫待數據庫圖標變綠則說明已經連接成功,接下來便可以對數據庫進行操作了。

當然,假如你擁有一定的數據庫基礎,也可以通過新建查詢操作來創建數據庫以及表。

我們在test1數據庫中建立一個user表,如圖所示:

其中userid為主鍵,且默認自增,所有字段均不能為空。

PyMySQL

PyMySQL是python3.x版本中用於連接mysql服務器的一個庫,python2中使用MySQLdb。

安裝PyMySQL之前可以先在代碼面板輸入import pymysql來查看Python版本是否自帶了PyMySQL包。

在PyCharm中安裝PyMySQL有兩種方法,一直接通過PyCharm提供的可視化界面進行安裝,二是在PyCharm的terminal界面輸入

pip3 install PyMySQL

PyMySQL簡易教程:

python3 pymysql庫介紹

學過數據庫的小伙伴了解一下就行,沒有學習過數據庫的需要先學習一下基本的SQL語言以及相關的數據庫概念。pymysql主要是通過傳入sql語句來對數據進行處理,優點是非常萬能,缺點就是每次進行處理時都要打很長的一段sql語句,過程較繁雜,不夠靈活簡便。

舉個例子:

import pymysql
# pymysql是根據游標對象cursor來對sql語句的處理的
class PyMySqlBase():
# 建立連接
conn = pymysql.connect(host="localhost", user='root', password=你的密碼(字符串格式), db=數據庫名稱(字符串格式))
# 獲取游標對象
cursor = conn.cursor()
# 類方法,同上,根據get_cursor方法來獲取cursor對象
@classmethod
def get_cursor(cls):
return cls.cursor
# 獲取cursor
cursor = PyMySqlBase.get_cursor()
# 向user表中插入用戶名為felix,密碼為123456,日期為2022/7/28的行,由於userid是自增,不用我們去對它進行插入
cursor.execute("insert into user(uname,pwd,create_time) values('felix','123456','2022/7/28')")
# commit操作,但凡涉及增刪改(即數據庫內數據發生了變化)的操作,都需要commit
PyMySqlBase.conn.commit()

然後通過navicat查看user表:

可以看到,我們已經通過pymysql成功向user表中插入了一條新的數據。簡而言之,pymysql的作用是使得我們可以通過python代碼來對數據庫進行操作。

SQLAlchemy

SQLAlchemy 是 Python 中一個通過 ORM 操作數據庫的框架。

SQLAlchemy 對象關系映射器提供了一種方法,用於將用戶定義的 Python 類與數據庫表相關聯,並將這些類(對象)的實例與其對應表中的行相關聯。它包括一個透明地同步對象及其相關行之間狀態的所有變化的系統,稱為工作單元,以及根據用戶定義的類及其定義的彼此之間的關系表達數據庫查詢的系統。

通俗點講,SQLAlchemy相當於將繁雜冗長的sql語言,轉化為了對應的方法,在對數據庫進行操作時,我們只需要調用對應的方法,傳遞特定的參數即可。但是在使用SQLAlchemy之前,我們需要將對象模型與數據庫表進行映射,即ORM,不了解的小伙伴可以看看這章:

ORM(Object Relational Mapping)框架

這裡我們要對user表進行處理,因此要建立user表的對象模型:

class User(SqlAlBase.get_base()):
__tablename__ = 'user'
userid = Column(Integer, autoincrement=True, primary_key=True)
uname = Column(String(255))
pwd = Column(String(255))
create_time = Column(String(255))

可以看到,user類中的每條屬性都對應著user表中的每個字段。

接下來使用SQLAlchemy來對user表添加新的對象,完整代碼如下:

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import MetaData
from sqlalchemy import Column, String, Integer
# URL用來作為SqlAlchemy創造引擎的url
# 格式為:"mysql+pymysql://root:你的mysql密碼@localhost:端口號/數據庫名字"
URL = "mysql+pymysql://root:你的密碼@localhost:3306/test1"
# sqlalchemy是根據session對象來調用對應方法來對數據進行處理
class SqlAlBase():
engine = create_engine(URL)
base = declarative_base()
session = sessionmaker(bind=engine)()
metadata = MetaData()
# 類方法,不需要創建SqlAlBase對象即可調用,get_session方法用來獲取session對象
@classmethod
def get_session(cls):
return cls.session
# 類方法,用來獲取base
@classmethod
def get_base(cls):
return cls.base
class User(SqlAlBase.get_base()):
__tablename__ = 'user'
userid = Column(Integer, autoincrement=True, primary_key=True)
uname = Column(String(255))
pwd = Column(String(255))
create_time = Column(String(255))
session = SqlAlBase.get_session()
# 新建一個User對象,用戶名為apple,密碼為654321,日期為2022/7/28
newUser = User(uname='apple', pwd='654321', create_time='2022/7/28')
# 使用session對象的add方法向表中添加新的用戶
session.add(newUser)
# commit方法
session.commit()

然後通過navicat查看user表:

可以看到,我們已經成功添加了一條新數據,當然你還可以通過SQLAlchemy來對數據庫進行其他的操作,這裡不再贅述。

SQLAlchemy介紹和基本使用方法

總結

pymysql與sqlalchemy都可以幫助我們實現用python代碼來操作數據庫的功能,兩者各有千秋,需要結合實際的需求來選擇使用,兩者並不是完全對立的,下一章我們會將兩者進行結合,實現sqlalchemy中方法的封裝,來幫助我們更加方便地通過python代碼來對數據庫進行處理。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved