1. 代码怎么分层?(关于建文件夹)
****企业真实的开发中,我们绝对不会 在处理网页 HTTP 请求的地方到处乱写 SQL。 标准做法叫 DAO (Data Access Object) 模式 :我们会专门建一个文件夹(通常命名为 db、dao 或 models),把所有涉及链接数据库的 SQL 按照业务写成独立的文件,比如 order_dao.py。 然后封装成简单的方法(比如 def fetch_orders():)。其他所有人写代码时,直接调用这个方法要数据就行了,完全屏蔽了底层的 SQL。
2. 怎么确保安全,绝对不被修改?(只读权限)
最佳实践是双路封杀 : 除了咱们不仅在写代码时只写 SELECT 语句,更硬核的做法是:在 MySQL 中专门新建一个小号(只读账号 Read-Only User) 。 我们把这个小号和密码填在 Python 里。由于这个小号在数据库层面就只被授予了"查"的权限,那么哪怕哪天代码得了精神分裂试图发送一句 DELETE,也会被 MySQL 门卫死死拦在门外!
3.没想到的那部分:还有两个致命风险点
SQL注入 (SQL Injection) 风险:
是导致无数公司被拖库的真凶。只要涉及到网页端输入的查询条件,绝对不能 用字符串拼接的方式产生 SQL(不能写 WHERE name = + 用户输入)。必须使用数据库认可的**"参数化查询"**(用占位符 ? 或 %s),以防黑客把删库指令当成用户名传进来。
连接枯竭风险
如果你发现系统用着用着卡死了,大概率是没有用**"连接池 (Connection Pool)"**。因为 MySQL 支持的同时连线数是有限的,不能每次查数据都"拨号、查数据、挂断电话"。真实开发中,我们会维持大约 10 根"专线"(连接池)不断开,所有查询排队使用这 10 根线。