关于pymysql与sqlite一点坑

本文介绍了使用pymysql处理文件路径中转义符的方法,并提供了SQLite3中重写工厂方法来获取字典形式结果集的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

pymysql:

    有时一些需要文件路径保存字段,会有一些"\\"转义符需要处理(PHP未发生过)。那么这里处理方式如下:

    这里依赖pymysql库:

savePath = pymysql.escape_string(row['save_path'])   

sqlite3:

    这里主要是重写字典工厂方法,那么查出来的结果集就是list[map{field:val}]结构

def get_file_dir():
    return os.path.dirname(os.path.abspath(__file__)) + "\\"

def get_db():
    exe_path = get_file_dir()
    file = 'xxxxxx.db'
    dbDir = exe_path + 'data\\'
    if not os.path.exists(dbDir):
        os.mkdir(dbDir)
        time.sleep(1)
    return dbDir + file


# 工厂方法重写
def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d


def get_con():
    con = sqlite3.connect(get_db())
    con.row_factory = dict_factory
    return con

 

### PyMySQL 和 PySQLSer 的区别 #### 功能特性差异 PyMySQL 是一个用于 Python 连接 MySQL 数据库的接口,遵循 Python DB-API 2.0 规范。该模块提供了对事务的支持以及多种字符集的选择[^1]。 相比之下,似乎存在表述错误,“pysqlser” 并不是一个广泛认知或存在的数据库连接库,在标准资源和官方文档中无法找到确切定义或描述。因此,这里假设可能是 “sqlite3”,这是 Python 自带的一个轻量级嵌入式关系型数据库 SQLite 的接口[^2]。 #### 使用场景对比 对于 PyMySQL 而言,适用于需要远程 MySQL/MariaDB 数据库服务器交互的应用程序开发环境之中。它允许开发者执行 SQL 查询并处理返回的数据结果集。例如: ```python import pymysql connection = pymysql.connect(host='localhost', user='user', password='passwd', database='db') try: with connection.cursor() as cursor: sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s" cursor.execute(sql, ('webmaster@python.org',)) result = cursor.fetchone() finally: connection.close() ``` 而 sqlite3 则非常适合于小型项目或者是那些不需要复杂设置就能快速启动的情况下的本地数据存储需求。SQLite 不是一个客户端/服务器架构的服务端进程;相反,它是直接链接到应用程序中的 C 库的一部分。这意味着它可以非常容易地部署,并且几乎可以在任何地方运行,只要目标平台支持编译后的二进制文件即可。下面是一段简单的例子来展示如何使用 sqlite3 来创建一个新的表单并将一些记录插入其中: ```python import sqlite3 conn = sqlite3.connect('example.db') c = conn.cursor() # 创建表格 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''') # 插入一行新纪录 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)") # 提交更改 conn.commit() # 关闭连接 conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值