python与mysql交互_python-python与mysql交互(pymysql)

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

原生模块 pymsql

ORM框架 SQLAchemy

一、pymsql

pymsql是Python中操作MySQL的模块。

下载安装

pip install pymsql

使用操作

1、执行SQL

importpymysql#创建连接

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))

更新、插入:

importpymysql#创建连接

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()

importpymysql

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的优点:

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

ORM使我们构造固化数据结构变得简单易行。

缺点:

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

安装sqlalchemy

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

pipinstall SQLAlchemy

sqlalchemy基本使用

importsqlalchemyfrom sqlalchemy importcreate_enginefrom sqlalchemy.ext.declarative importdeclarative_basefrom sqlalchemy importInteger,String,Columnfrom sqlalchemy.orm importsessionmaker#创建一个连接,定义用pymysql操作数据库,数据库账号密码数据库名,echo=True是打印创建语句

engine=create_engine("mysql+pymysql://jehu:225325@192.168.242.133/mydb",encoding='utf-8',echo=True)

Base=declarative_base() #创建orm基类

classUser(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值