关系型数据库存储

xiaoxiao2021-02-28  55

关系型数据库是基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表。多个表组成一个数据库。

关系型数据库有多种,如MySQl、Oracle、SQLite、SQL Server等。

MySQL的存储

首先需要安装MySQL数据库和相关的库

相关数据库的安装

下载“mysql-installer-web-community-8.0.11.0.msi”,然后点击Next直接安装即可。

如果想要和Python交互的话,还需要安装PyMySQL。

安装完成后验证是否安装成功:

>>> import pymysql >>> pymysql.VERSION (0, 9, 2, None)

连接数据库

利用PyMySQL连接MySQL,然后创建一个新的数据库,名字叫作chenzf。

import pymysql db = pymysql.connect(host='localhost', user='root', password='1xxxxx8', port=3306) cursor = db.cursor() cursor.execute('SELECT VERSION()') data = cursor.fetchone() print('Database version:', data) cursor.execute("CREATE DATABASE chenzf DEFAULT CHARACTER SET utf8mb4") db.close()

运行结果为:

Database version: ('8.0.11',)

通过connect()方法声明一个MySQL连接对象db,由于MySQL在本地运行,所以传入的是localhost;端口号是默认的。连接成功后,调用cursor()方法获得MySQL的操作游标,利用游标来执行两句SQL语句,直接用execute()方法执行即可。第一句SQL语句用于获得数据库的版本,调用fetchone()方法获得第一条数据,第二句SQL语句创建一个新的数据库,默认编码是utf8mb4。

创建表

创建数据库的操作只需执行一次就好,接下来新创建一个students数据表:

import pymysql db = pymysql.connect(host='localhost', user='root', password='xxxxxx', port=3306, db='chenzf') cursor = db.cursor() sql = """CREATE TABLE IF NOT EXISTS students ( id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))""" cursor.execute(sql) db.close()

运行结果:

插入数据

向数据库中插入信息:

import pymysql new_id = '20180001' new_user = 'chen' new_age = 25 db = pymysql.connect(host='localhost', user='root', password='xxxxx', port=3306, db='chenzf') cursor = db.cursor() sql = 'INSERT INTO students(id, name, age) values(%s, %s, %s)' try: cursor.execute(sql, (new_id, new_user, new_age)) db.commit() except: db.rollback() db.close()

需要执行db对象的commit()方法才可以实现数据插入,这个方法才是真正将语句提交到数据库执行的方法。对于数据插入、更新、删除操作,都需调用该方法才能生效。

加入异常处理,如果执行失败,则调用rollback()执行数据回滚。

这里涉及到事务问题:事务机制可以确保数据的一致性,也就是这件事要么发生了,要么没有发生。插入、删除、更新操作都必须是一个事务,所以这些操作的标准写法是:

try: cursor.execute(sql) db.commit() except: db.rollback()运行结果:

为了方便插入数据,需要构造一个通用方法:传入动态变化的字典!

import pymysql data = { 'id': '20180002', 'name': 'BOB', 'age': 25 } table = 'students' # 表名 keys = ', '.join(data.keys()) # 用逗号隔开 values = ', '.join(['%s'] * len(data)) # 构造%s, %s, %s # sql = 'INSERT INTO students(id, name, age) values(%s, %s, %s)' sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values) db = pymysql.connect(host='localhost', user='root', password='120618', port=3306, db='chenzf') cursor = db.cursor() try: # cursor.execute(sql, (new_id, new_user, new_age)) cursor.execute(sql, tuple(data.values())) print('Successful') db.commit() except: print('Failed') db.rollback() db.close()

运行结果:

转载请注明原文地址: https://www.6miu.com/read-2732326.html

最新回复(0)