热点

python如何导入数据库

时间:2010-12-5 17:23:32  作者:娱乐   来源:知识  查看:  评论:0
内容摘要:Python连数据库这事儿,说穿了就三步:装库、连上、执行SQL。别被那些ORM框架唬住,先搞懂最底层的逻辑,后面什么都好说。 拿MySQL举例。你pip install pymysql,然后代码里这

Python连数据库这事儿,何导说穿了就三步:装库、入数连上、据库执行SQL。何导别被那些ORM框架唬住,入数先搞懂最底层的据库逻辑,后面什么都好说。何导

拿MySQL举例。入数你pip install pymysql,据库然后代码里这么写:

import pymysql conn = pymysql.connect(host='localhost',何导 user='root', password='123456', database='test') cursor = conn.cursor() cursor.execute('SELECT * FROM users') rows = cursor.fetchall() print(rows) conn.close()

就这么几行,数据就出来了。入数但这里有个坑——很多人忘了conn.commit(),据库插入或更新数据时不写这句,何导程序跑完一看,入数数据库里啥变化没有。据库我当年第一次写insert语句,检查了半小时,最后发现是没提交事务。那感觉,就像你写了封信但忘了贴邮票,白忙活一场。

不过直接用pymysql还是有点糙。每次都要手动管理连接、游标、关闭资源,写多了容易烦。这时候SQLAlchemy就派上用场了。它是个ORM,让你用Python类去操作表,不用手写SQL字符串。比如:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import declarative_base, sessionmaker engine = create_engine('mysql+pymysql://root:123456@localhost/test') Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) Session = sessionmaker(bind=engine) session = Session() users = session.query(User).all() print([u.name for u in users])

你看,是不是清爽多了?但ORM有个毛病——它帮你屏蔽了SQL细节,出了问题你反而不知道底层在干嘛。比如某个查询特别慢,你得知道它生成的是什么SQL,不然只能瞎猜。所以我的建议是:小项目用pymysql,写几个函数封装一下就行;项目大了再用ORM,但必须会看它打印出的原生SQL,别当甩手掌柜。

还有个细节容易被忽略:连接池。每次连数据库都新建连接,性能很差,尤其是高并发场景。你可以用DBUtils或者直接配置SQLAlchemy的pool_size参数。这块儿不复杂,但很多人不重视,等线上崩了才后悔。

最后说点实在的。数据库密码别硬编码在代码里,环境变量或者配置文件里放,.gitignore记得加进去。还有,SQL注入这事儿,用参数化查询就能防住,别图省事去拼字符串。我见过有人把用户输入直接怼进SQL里,结果整个表被删了——那种事故,一次就够你记一辈子。

Python导入数据库,本质上就是三个词:驱动、连接、执行。剩下的都是工程化问题。你多写几次,踩过几个坑,自然就熟了。别怕报错,报错信息就是你的老师。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap