Python读取sql文件,且可执行

博客介绍了使用Python直接读取SQL文件,以实现使用read_sql可执行的方法,聚焦于Python与SQL文件的结合运用,属于信息技术领域。

 

python 直接读取 sql 文件,达到使用 read_sql 可执行的目的


# sql文件夹路径
sql_path = 'sql文件夹路径' + '\\'

# sql文件名, .sql后缀的
sql_file = 'sql文件名.sql'

# 读取 sql 文件文本内容
sql = open(sql_path + sql_file, 'r', encoding = 'utf8')
sqltxt = sql.readlines()
# 此时 sqltxt 为 list 类型

# 读取之后关闭文件
sql.close()

# list 转 str
sql = "".join(sqltxt)

import pandas as pd
import pymysql
con = pymysql.connect(host = "机器", 
                      user = "用户名", password = '密码', 
                      db = "数据库名", charset='utf8')
# charset用于修正中文输出为问号的问题

df = pd.read_sql(sql, con)
con.close()

#  con为数据库连接设置,参考以下链接
#  https://blog.youkuaiyun.com/zyq_victory/article/details/78153404

# 结果就是将自己写的 sql 提取的数据读取为 DataFrame

 

### 如何使用 Python 读取和解析 `.sqldb` 文件 #### 使用 `sqlite3` 库读取 SQLite 数据文件 Python 自带的 `sqlite3` 模块可以用来操作 SQLite 数据文件,包括 `.sqldb` 文件。通过该模块可以直接连接到数据文件并执行查询。 以下是具体实现方式: ```python import sqlite3 # 连接到 .sqldb 文件 connection = sqlite3.connect('example.sqldb') # 创建游标对象 cursor = connection.cursor() # 查询表结构 cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") tables = cursor.fetchall() print(f"Tables in the database: {tables}[^1]") # 假设有一个名为 'users' 的表,查询其内容 try: cursor.execute("SELECT * FROM users;") rows = cursor.fetchall() for row in rows: print(row) except sqlite3.OperationalError as e: print(f"An error occurred while querying the table: {e}") # 关闭连接 connection.close() ``` 上述代码展示了如何打开一个 `.sqldb` 文件,并获取其中的表格名称以及特定表格的内容。 --- #### 处理复杂 SQL 脚本的情况 如果 `.sqldb` 文件不仅是一个简单的 SQLite 数据文件,还可能包含复杂的 SQL 脚本,则可以通过先读取脚本内容再逐条执行的方式处理。 以下是如何读取并解析 SQL 文件中的命令: ```python with open('script.sql', 'r') as file: sql_script = file.read() # 将 SQL 脚本拆分为单独的语句 statements = sql_script.split(';') # 遍历每一条 SQL 语句并执行 for statement in statements: if statement.strip(): # 忽略空白语句 try: cursor.execute(statement) results = cursor.fetchall() if results: print(results) except Exception as e: print(f"Failed to execute statement '{statement[:50]}...': {str(e)}") ``` 此部分适用于需要批量运行多个 SQL 语句的情形[^2]。 --- #### 导入第三方工具扩展功能 对于更高级的功能需求(如可视化、性能优化),可考虑引入外部库来增强能力。例如: - **SQLAlchemy**: 提供 ORM 功能以便于管理关系型数据库。 - **Pandas**: 方便地将查询结果转换为 DataFrame 结构进行进一步分析。 安装这些库可通过 pip 完成: ```bash pip install sqlalchemy pandas ``` 下面展示了一个结合 Pandas 和 SQLAlchemy 的例子: ```python from sqlalchemy import create_engine import pandas as pd engine = create_engine('sqlite:///example.sqldb') df = pd.read_sql_query("SELECT * FROM users;", engine) print(df.head()) ``` 这段代码利用了 SQLAlchemy 构建引擎并与 Pandas 协同工作,从而简化数据分析流程[^4]。 --- #### 注意事项 当尝试访问某些特殊字段类型的数据时(比如二进制 BLOB 字段),需额外注意编码解码过程。例如,在提取图像或其他多媒体资源的情况下,应采用适当的方法保存它们至本地磁盘或内存缓冲区中[^3]。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值