首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pyodbc:数据库连接神器,这个Python库让数据库操作更简单!

跟数据库打交道是每个程序员的必修课。要是你还在为Python怎么连数据库发愁,那可得好好认识下pyodbc这个香饽饽了。它就像个万能翻译官,让Python能跟各种数据库自由对话,SQL Server、MySQL、Oracle统统不在话下。

安装那些事

装这玩意特别简单,一行命令搞定:

pip install pyodbc

不过啊,还得先装个ODBC驱动,不然这库就没法正常工作了。就像开车得先有驾照一样,装驱动这事得根据你用的数据库来:

# 看看已经装了哪些驱动

import pyodbc

print(pyodbc.drivers())

连接数据库

来看看怎么连上SQL Server:

import pyodbc

# 连接参数

conn_str = (

“Driver={SQL Server};”

“Server=localhost;”

“Database=test_db;”

“Trusted_Connection=yes;” # Windows认证

)

# 建立连接

conn = pyodbc.connect(conn_str)

cursor = conn.cursor()

小贴士:

连接字符串里的参数得根据实际情况改

要是用SQL认证,得加上uid和pwd参数

连接用完记得关闭,不然容易造成资源泄露

查询数据这么玩

查询数据库可太常见了,瞧瞧这代码多优雅:

# 简单查询

cursor.execute(“SELECT * FROM users”)

rows = cursor.fetchall()

# 带参数查询,防SQL注入

age = 25

cursor.execute(“SELECT * FROM users WHERE age > ?”, age)

# 一条一条取数据

while True:

row = cursor.fetchone()

if not row:

break

print(row)

增删改操作

数据库离不开增删改,做起来也贼简单:

# 插入数据

cursor.execute(

“INSERT INTO users (name, age) VALUES (?, ?)”,

(“小猫”, 3)

)

# 更新数据

cursor.execute(

“UPDATE users SET age = ?WHERE name = ?”,

(4, “小猫”)

)

# 删除数据

cursor.execute(

“DELETE FROM users WHERE name = ?”,

(“小猫”,)

)

# 别忘了提交事务

conn.commit()

小贴士:

用参数化查询能防SQL注入,别直接拼SQL语句

改完数据记得commit,不然白改

要是出错了可以rollback回滚

事务处理

要是操作特别多,用事务包起来更稳:

try:

cursor.execute(“INSERT INTO users (name) VALUES (?)”, “张三”)

cursor.execute(“UPDATE accounts SET balance = balance - 100”)

conn.commit()

except:

conn.rollback()

print(“完蛋,出错了”)

finally:

conn.close()

性能优化小技巧

批量插入用executemany,比一条条插快多了:

data = [(“张三”, 20), (“李四”, 22), (“王五”, 25)]

cursor.executemany(

“INSERT INTO users (name, age) VALUES (?, ?)”,

data

)

大数据量查询,用fetchone一条条处理,别一次性fetchall:

cursor.execute(“SELECT * FROM big_table”)

while True:

row = cursor.fetchone()

if not row:

break

process_row(row) # 处理每行数据

小贴士:

查询记得加索引,不然慢死了

记得及时关闭cursor和connection

大事务要拆小,不然锁太久

pyodbc这玩意是真好用,又稳又快,基本上市面上主流数据库都能连。不过用之前得想清楚是不是真需要直接操作数据库,有时候用个ORM可能更合适。看场景选工具,这才是技术人的水平。

推 荐 阅 读

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oz3iZKfmKM1G5ApIjrNkoLPw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券