python-python与mysql交互(pymysql)

本篇对于Python操作MySQL主要使用两种方式:

  • 原生模块 pymsql
  • ORM框架 SQLAchemy

一、pymsql

pymsql是Python中操作MySQL的模块。

下载安装

pip install pymsql

使用操作

1、执行SQL

import pymysql# 创建连接conn = pymysql.connect(host=192.168.242.133, port=3306, user=jehu, passwd=225325, db=mydb)# 创建游标cursor = conn.cursor()# 执行SQL,并返回收影响行数effect_row = cursor.execute("select * from student")print(effect_row)#逐行取出查询结果print(cursor.fetchone())print(cursor.fetchone())print(cursor.fetchone())print("-----------")#一次取出所有结果,但是是从前面fetchone之后开始取所有print(cursor.fetchall())

执行结果:

7(4, jehu, M, 19, 3)(5, alex, M, 20, 3)(6, yiwei, M, 21, 3)-----------((7, xinyue, F, 19, 3), (8, jingjing, F, 21, 3), (9, liangqi, F, 21, 2), (10, wuyuling, F, 18, 2))

更新、插入:

import pymysql# 创建连接conn = pymysql.connect(host=192.168.242.133, port=3306, user=jehu, passwd=225325, db=mydb)# 创建游标cursor = conn.cursor()# 执行SQL,更新数据effect_row = cursor.execute("update student set sage=20 where sname=‘jehu‘;")#插入数据data=[ (kaifeng,M,23,3), (qingquan,M,24,3),]effect_row1=cursor.executemany("insert into student (sname,sex,sage,class) values (%s,%s,%s,%s)",data)#提交,不然无法保存新建或者修改的数据conn.commit()
import pymysql conn = pymysql.connect(host=127.0.0.1, port=3306, user=root, passwd=123, db=t1)cursor = conn.cursor()cursor.execute("select * from hosts") # 获取第一行数据row_1 = cursor.fetchone() # 获取前n行数据# row_2 = cursor.fetchmany(3)# 获取所有数据# row_3 = cursor.fetchall() conn.commit()cursor.close()conn.close()

 

二、ORM

ORM介绍

orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。

 

 

orm的优点:

  1. 隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。
  2. ORM使我们构造固化数据结构变得简单易行。

缺点:

  1. 无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。

安装sqlalchemy

在Python中,最有名的ORM框架是SQLAlchemy。

pip install SQLAlchemy

sqlalchemy基本使用

import sqlalchemyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Integer,String,Columnfrom sqlalchemy.orm import sessionmaker#创建一个连接,定义用pymysql操作数据库,数据库账号密码数据库名,echo=True是打印创建语句engine=create_engine("mysql+pymysql://jehu:225325@192.168.242.133/mydb",encoding=utf-8,echo=True)Base=declarative_base() #创建orm基类class User(Base): __tablename__="user" #表名 id=Column(Integer,primary_key=True) name=Column(String(23)) password=Column(String(64))Base.metadata.create_all(engine) #创建表结构,把基于Base的子类都创建Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例session=Session_class() #生成session实例user_obj = User(name="jehu", password="jehu123") # 生成你要创建的数据对象user_obj2 = User(name="zhangzh", password="zhangzh123")session.add(user_obj) # 把要创建的数据对象添加到这个session里, 一会统一创建session.add(user_obj2)session.commit() # 现此才统一提交,创建数据

https://www.cnblogs.com/alex3714/articles/5978329.html

 

相关文章