04:sqlalchemy操作数据库 不错
目錄:
- 1.1 ORM介紹(作用:不用原生SQL語句對數據庫操作)
- 1.2 安裝sqlalchemy并創(chuàng)建表
- 1.3 使用sqlalchemy對表基本操作
- 1.4 一對多外鍵關聯(lián)
- 1.5 sqlalchemy多對多關聯(lián)
1.1 ORM介紹(作用:不用原生SQL語句對數據庫操作)?????返回頂部
1、什么是orm(orm是一種術語而不是軟件)
1)orm英文全稱object relational mapping,就是對象映射關系程序
2)簡單來說我們類似python這種面向對象的程序來說一切皆對象,但是我們使用的數據庫卻都是關系型的
3)為了保證一致的使用習慣,通過orm將編程語言的對象模型和數據庫的關系模型建立映射關系
4)這樣我們在使用編程語言對數據庫進行操作的時候可以直接使用編程語言的對象模型進行操作就可以了,
? ? ?而不用直接使用sql語言
? ? ? ? ? ? ? ? ??
2、ORM作用
1)隱藏了數據訪問細節(jié),“封閉”的通用數據庫交互,ORM的核心。他使得我們的通用數據庫交互變得簡單
? ? ?易行,并且完全不用考慮該死的SQL語句。快速開發(fā),由此而來
2)ORM使我們構造固化數據結構變得簡單易行。
3、ORM缺點
1)無可避免的,自動化意味著映射和關聯(lián)管理,代價是犧牲性能
2)現(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
1.2 安裝sqlalchemy并創(chuàng)建表?????返回頂部
? 1、在win10中直接用pip3安裝即可
pip3 install sqlalchemy
2、sqlalchemy可以支持多種數據庫的連接使用:下面是常用的幾種
MySQL-Python
mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
pymysql
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
MySQL-Connector
mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
cx_Oracle
oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
更多詳見:?http://docs.sqlalchemy.org/en/latest/dialects/index.html
3、sqlalchemy說明
1) sqlalchemy的底層還是對mysqldb, pymysql的封裝
2) 我們不用寫原生SQL了,但是sqlalchemy執(zhí)行的時候還是要用原生SQL
3) Sqlalchemy就是通過使用mysqldb, pymysql等來執(zhí)行原生SQL語句
4、創(chuàng)建表
1. 使用原生sql創(chuàng)建表
CREATE TABLE user (
id INTEGER NOT NULL AUTO_INCREMENT,?
name VARCHAR(32),?
password VARCHAR(64),?
PRIMARY KEY (id)
)
2. 使用sqlalchemy創(chuàng)建表的兩種方法
?法1:使用sqlalchemy創(chuàng)建表(不常用) ?法2:使用sqlalchemy創(chuàng)建表(常用方法)#! -*- coding:utf8 -*-
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker'''第一步:連接數據庫'''
engine = create_engine("mysql+pymysql://root:1@127.0.0.1/bsp?charset=utf8")
# engine = create_engine("mysql+pymysql://root:1@127.0.0.1/tomdb",encoding='utf-8', echo=True)'''附加: 無論是增刪改查都要先創(chuàng)建與數據庫的會話session class'''
#創(chuàng)建與數據庫的會話session class ,注意,這里返回給session的是個class類,不是實例
Session_class = sessionmaker(bind=engine) #創(chuàng)建用于數據庫session的類
session = Session_class() #這里才是生成session實例可以理解為cursor'''第二步:操作數據庫'''
#1、查看mysql中有哪些數據庫
dbs=session.execute('show databases;').fetchall()#2、切換當前數據庫
session.execute('use bsp;')#3、查詢時過濾出第一條
row1=session.execute('select * from relations_department where Id>1;').first()
fid_id = row1.fid_id#4、一對多關聯(lián)查詢: 根據上面查詢的父部門id 可以找到父部門信息
row2=session.execute('select * from relations_department where Id=%s;'%fid_id).first()
print row2.name # 政府事業(yè)部 1.3 使用sqlalchemy對表基本操作?????返回頂部
?1、連接mysql ?2、創(chuàng)建表結構 ?3、創(chuàng)建與數據庫的會話:增刪改查都要用這個會話 ?4、增 ?5、刪 ?6、改 ?7、簡單查找 ?8、高級查找 ?9、分組 ?10、回滾1.4 一對多外鍵關聯(lián)?????返回頂部
?models.py 需要實現(xiàn)一對多聯(lián)級刪除時需要添加參數 ?models.py 創(chuàng)建一對多表結構 ?1、增:向對多表中插入數據 ?2、查:一對多正向反向查找 ?3、改 ?4、刪:聯(lián)級需要在創(chuàng)建表時添加參數1.5 sqlalchemy多對多關聯(lián)?????返回頂部
?法1:models.py 自己定義第三張表 ?1、增 ?2、查:多對多正向發(fā)現(xiàn)查找 ?3、改 ?4、刪1.6?sqlalchemy執(zhí)行原生SQL語句?
1、執(zhí)行原生SQL語句
?python執(zhí)行原生SQL2、找到當前數據庫中所有非空表
?找到數據庫中所有非空表?
轉載于:https://www.cnblogs.com/ExMan/p/10313789.html
總結
以上是生活随笔為你收集整理的04:sqlalchemy操作数据库 不错的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各位大佬求告知这是啥电影啊
- 下一篇: 打狗针多少钱啊?