Python操作MySQL

发布时间:2024年01月19日

pymsql

pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。

下载安装

1

pip3 install pymysql

使用操作

1、执行SQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

??

# 创建连接

conn = pymysql.connect(host='127.0.0.1', port=3306,?user='root', passwd='123', db='t1')

# 创建游标

cursor?= conn.cursor()

??

# 执行SQL,并返回收影响行数

effect_row =?cursor.execute("update hosts set host = '1.1.1.2'")

??

# 执行SQL,并返回受影响行数

#effect_row =?cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))

??

# 执行SQL,并返回受影响行数

#effect_row =?cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])

??

??

# 提交,不然无法保存新建或者修改的数据

conn.commit()

??

# 关闭游标

cursor.close()

# 关闭连接

conn.close()

2、获取新创建数据自增ID

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import pymysql

??

conn = pymysql.connect(host='127.0.0.1', port=3306,?user='root', passwd='123', db='t1')

cursor?= conn.cursor()

cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])

conn.commit()

cursor.close()

conn.close()

??

# 获取最新自增ID

new_id =?cursor.lastrowid

3、获取查询数据

+ View Code

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

  • cursor.scroll(1,mode='relative') ?# 相对当前位置移动
  • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

4、fetch数据类型

  关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:

+ View Code

?练习题

SQLAchemy

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

安装:

1

pip3 install SQLAlchemy

SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

1

2

3

4

5

6

7

8

9

10

11

12

13

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

一、内部处理

使用 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#!/usr/bin/env python

# -*- coding:utf-8 -*-

from?sqlalchemy import create_engine

??

??

engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/t1", max_overflow=5)

??

# 执行SQL

# cur = engine.execute(

#?????"INSERT INTO hosts (host, color_id) VALUES ('1.1.1.22', 3)"

# )

??

# 新插入行自增ID

# cur.lastrowid

??

# 执行SQL

# cur = engine.execute(

#?????"INSERT INTO hosts (host, color_id) VALUES(%s, %s)",[('1.1.1.22', 3),('1.1.1.221', 3),]

# )

??

??

# 执行SQL

# cur = engine.execute(

#?????"INSERT INTO hosts (host, color_id) VALUES (%(host)s, %(color_id)s)",

#???? host='1.1.1.99', color_id=3

# )

??

# 执行SQL

# cur = engine.execute('select * from hosts')

# 获取第一行数据

# cur.fetchone()

# 获取第n行数据

# cur.fetchmany(3)

# 获取所有数据

# cur.fetchall()

二、ORM功能使用

使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作。根据类创建对象,对象转换成SQL,执行SQL。

cnblogs.com/wupeiqi/articles/5713330.html

文章来源:https://blog.csdn.net/liujiaping/article/details/135691796
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。