Python使用PyMySQL保存字典数据至MySQL并自动建表
本文介绍如何利用Python的PyMySQL库将字典类型数据保存至MySQL数据库。通过封装类实现自动检测表是否存在,若不存在则根据字典键值自动创建表及对应列,并支持写入多条不同结构的字典数据,简化数据库交互流程。
Python字典数据存入MySQL自动建表方法
字典作为一种可变容器模型,能够存储任意类型的对象,在实际开发中常作为数据处理的基础工具类使用。
接下来将演示如何使用pymysql库来创建数据表并执行相关的SQL操作。
具体实现逻辑可参考以下示例代码。
import pymysql
class UseMysql(object):
def __init__(self, user, passwd, db, host="127.0.0.1", port=3306):
self.db = db
self.conn = pymysql.connect(
host=host, user=user, passwd=passwd, db=db, port=port, charset='utf8') # 链接数据库
self.cursor = self.conn.cursor()
def table_exists(self, table_name) -> bool:
"""判断表是否存在
:param table_name: 表名
:return: 存在返回True,不存在返回False
"""
sql = "show tables;"
self.cursor.execute(sql)
tables = self.cursor.fetchall()
for _t in tables:
if table_name == _t[0]:
return True
return False
def create_table(self, data: dict, table_name):
"""创建表"""
# 构造数据库
sql_key_str = ''
columnStyle = ' text' # 数据库字段类型
for key in data.keys():
sql_key_str = sql_key_str + ' ' + key + columnStyle + ','
self.cursor.execute("CREATE TABLE %s (%s)" % (table_name, sql_key_str[:-1]))
# 添加自增ID
self.cursor.execute("""ALTER TABLE `{}` \
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST, \
ADD PRIMARY KEY (`id`);"""
.format(table_name))
# 添加创建时间
self.cursor.execute(
"""ALTER TABLE {} ADD join_time timestamp NULL DEFAULT current_timestamp();""".format(table_name))
def write_dict(self, data: dict, table_name):
"""
写入mysql,如果没有表,创建表
:param data: 字典类型
:param table_name: 表名
:return:
"""
if not self.table_exists(table_name):
self.create_table(data, table_name)
sql_key = '' # 数据库行字段
sql_value = '' # 数据库值
for key in data.keys(): # 生成insert插入语句
sql_value = (sql_value + '"' + pymysql.escape_string(data[key]) + '"' + ',')
sql_key = sql_key + ' ' + key + ','
self.cursor.execute(
"INSERT INTO %s (%s) VALUES (%s)" % (table_name, sql_key[:-1], sql_value[:-1]))
self.conn.commit() # 提交当前事务
if __name__ == '__main__':
mysql = UseMysql('用户名', '密码', '数据库名')
my_data1 = {"col1": "a", "col2": "b", "col3": "c", }
mysql.write_dict(my_data1, table_name="mytable")
my_data2 = {"col1": "a2", "col2": "b2"}
mysql.write_dict(my_data2, table_name="mytable")
至此,关于Python保存字典类型数据至MySQL并自动创建表与列的介绍已完成,更多相关内容可搜索本站历史文章或浏览后续系列文章,感谢大家的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









