pymysql的使用 - Go语言中文社区

pymysql的使用


1.取得 MYSQL 的版本

import pymysql
import getpass # 该模块无法在pycharm中使用

con = None
try:
    pwd = getpass.getpass("请输入root账户密码:")
    # 连接mysql的方法,connect('ip', 'user', 'password', 'dbname')
    con = pymysql.connect('localhost', 'root', pwd, 'test');

    # 所有的查询都是连接con的一个模块cursor上面运行的
    cur = con.cursor()

    # 执行一个查询
    cur.execute("SELECT VERSION()")
    # 取得上个查询的结果,是单个结果

    data = cur.fetchone()
    print("Database version: ", data)
finally:
    if con:
        con.close()

运行结果如下:

2.创建一个表,并插入数据

import pymysql as py
import sys
import getpass

pwd = getpass.getpass("请输入root账户密码:")
#将 con 设定为全局连接
con = py.connect('localhost', 'root', pwd, 'test');
with con:
    #获取连接的 cursor,只有获取了 cursor,我们才能进行各种操作
    cur = con.cursor()

    #创建一个数据表 writers(id,name)
    cur.execute("CREATE TABLE IF NOT EXISTS 
    Writers(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(25))")

    #以下插入了 5 条数据
    cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')")

运行后,先在可视化界面中查看,

成功创建。

3.在python中使用select来获取mysql的数据并遍历

import pymysql as py
import sys
import getpass

pd = getpass.getpass("请输入root账户密码:")
#将 con 设定为全局连接
con = py.connect('localhost', 'root', pd, 'test');
with con:
    #获取连接的 cursor,只有获取了 cursor,我们才能进行各种操作
    cur = con.cursor()

    # 类似其他语言的query函数,execute是python中的执行查询函数
    cur.execute("SELECT * FROM Writers")

    # 使用fetchall函数,将结果集(多维元组)存入rows里面
    rows = cur.fetchall()

    # 依次遍历结果集,发现每个元素,也就是找到表中的一条记录,用一个元组来表示
    for row in rows:
        print(row)

输出结果:

可以看出,上面的代码,以元组的形式输出所有结果。如果我们希望取出单个数据呢?

import pymysql as py
import sys
import getpass

# pd = getpass.getpass("请输入root账户密码:")
#将 con 设定为全局连接
con = py.connect('localhost', 'root', 'root', 'test')

with con:
    #获取执行查询的对象
    cur = con.cursor()

    #执行那个查询,这里用的是 select 语句
    cur.execute("SELECT * FROM Writers")

    # 使用 cur.rowcount 获取结果集的条数
    numrows = int(cur.rowcount)
    # 循环 numrows 次,每次取出一行数据
    for i in range(numrows):
        # 每次取出一行,放到 row 中,这是一个元组(id,name)
        row = cur.fetchone()
        if i == 3:
            break
        # 直接输出两个元素
        print(row[0], row[1])

输出结果:

1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger

4.使用字典cursor取得结果集(可以使用表字段名字访问值)

import pymysql as py
import sys
import getpass

# pd = getpass.getpass("请输入root账户密码:")
# 获得 mysql 查询的链接对象
con = py.connect('localhost', 'root', 'root', 'test')

with con:
    # 获取连接上的字典 cursor,注意获取的方法,
    # 每一个 cursor 其实都是 cursor 的子类
    cur = con.cursor(py.cursors.DictCursor)
    # 执行语句不变
    cur.execute("SELECT * FROM Writers")
    # 获取数据方法不变
    rows = cur.fetchall()
    # 遍历数据也不变(比上一个更直接一点)
    for row in rows:
        # 这里,可以使用键值对的方法,由键名字来获取数据
        print("%s %s" % (row["Id"], row["Name"]))

输出结果:

1 Jack London
2 Honore de Balzac
3 Lion Feuchtwanger
4 Emile Zola
5 Truman Capote

 5.获取单个表的字段名和信息的方法

import pymysql as py
# 获得 mysql 查询的链接对象
con = py.connect('localhost', 'root', 'root', 'test')

with con:
    # 获取普通的查询 cursor
    cur = con.cursor()
    cur.execute("SELECT * FROM Writers")
    rows = cur.fetchall()
    # 获取连接对象的描述信息
    desc = cur.description
    print('cur.description:',desc)
    # 打印表头,就是字段名字
    print("%s %3s" % (desc[0][0], desc[1][0]))
    for row in rows:
        #打印结果
        print("%2s %3s" % row)

运行结果:

cur.description: (('Id', 3, None, 11, 11, 0, False), ('Name', 253, None, 100, 100, 0, True))
Id Name
 1 Jack London
 2 Honore de Balzac
 3 Lion Feuchtwanger
 4 Emile Zola
 5 Truman Capote

 6.使用 Prepared statements 执行查询(更安全方便)

import pymysql as py

con = py.connect('localhost', 'root', 'root', 'test')

with con:
    cur = con.cursor()

    cur.execute("UPDATE Writers SET Name = %s WHERE Id = %s",
                ("Guy de Maupasant", "4"))

    print("Number of rows updated: %d" % cur.rowcount)

运行结果:

Number of rows updated: 1

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39528941/article/details/83783447
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-08 11:05:18
  • 阅读 ( 1552 )
  • 分类:数据库

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢