Python——MySql操作

pymysql

pymysql 的GitHub地址:https://github.com/PyMySQL/PyMySQL

image.png

常见数据类

类型 字节大小 有符号范围(Signed) 无符号范围(Unsigned)
TINYINT 1 -128 ~ 127 0 ~ 255
SMALLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

字符串

类型 字节大小 示例
CHAR 0-255 类型:char(3) 输入 'ab', 实际存储为'ab ', 输入'abcd' 实际存储为 'abc'
VARCHAR 0-255 类型:varchar(3) 输 'ab',实际存储为'ab', 输入'abcd',实际存储为'abc'
TEXT 0-65535 大文本

日期时间类型

类型 字节大小 示例
DATE 4 '2020-01-01'
TIME 3 '12:29:59'
DATETIME 8 '2020-01-01 12:29:59'
YEAR 1 '2017'
TIMESTAMP 4 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

安装方式

 python3 -m pip install PyMySQL

Connection

创建对象:调用connect()方法用于建立与数据库的连接

conn=connect(参数列表)

参数host:连接的mysql主机,如果本机是'localhost'
参数port:连接的mysql主机的端口,默认是3306
参数database:数据库的名称
参数user:连接的用户名
参数password:连接的密码
参数charset:通信采用的编码方式,推荐使用utf8
对象的方法
close()关闭连接
commit()提交
cursor()返回Cursor对象,用于执行sql语句并获得结果

Cursor游标

用于执行sql语句,使用频度最高的语句为select、insert、update、delete
获取Cursor对象:调用Connection对象的cursor()方法

c=conn.cursor()

对象的方法
close()关闭
execute(operation [, parameters ])执行语句,返回受影响的行数,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句
fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组
fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回

连接数据库

import pymysql

conn = pymysql.connect(host='localhost', user='baxiang', password='123456', port=3306)
cursor = conn.cursor()
cursor.execute('SELECT VERSION()')
data = cursor.fetchone()
print(''.join(data))
cursor.execute('SHOW DATABASES')
data = cursor.fetchone()
print(''.join(data))
conn.close()

创建数据库

import pymysql

conn = pymysql.connect(host='localhost', user='baxiang', password='123456', port=3306)
cursor = conn.cursor()
cursor.execute('CREATE DATABASE py_test DEFAULT CHARACTER  SET utf8')
cursor.execute('SHOW DATABASES')
dbList = cursor.fetchall()
for db in dbList:
    print('db name:'+''.join(db))
conn.close()

fetchall获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回

创建表

import pymysql

conn = pymysql.connect(host='localhost', user='baxiang', password='123456', port=3306, db='py_test')
cursor = conn.cursor()
sql = '''
CREATE TABLE IF NOT EXISTS exam(
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`score` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`id`)
)COMMENT='学生'
'''
cursor.execute(sql)
cursor.close()
conn.close()

插入数据

import pymysql

conn = pymysql.connect(host='localhost', user='baxiang', password='123456', port=3306, db='py_test')
cursor = conn.cursor()
try:
    cursor.execute("INSERT INTO exam(id,name,score) VALUES (%s,%s,%s)", (2009100981, 'ba', 95))
    conn.commit()
except:
    conn.rollback()

cursor.close()
conn.close()

查询数据

import pymysql

conn = pymysql.connect(host='localhost', user='baxiang', password='123456', port=3306, db='py_test')
cursor = conn.cursor()
try:
    cursor.execute("SELECT * FROM exam WHERE score >= 60")
    dataList = cursor.fetchall()
    for data in dataList:
        print(data)
except Exception as e:
    print(e)

cursor.close()
conn.close()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容