python 3.X 连接mysql(补充)

本文档详细介绍了如何使用 Python 对 MySQL 数据库进行操作,包括连接数据库、执行 SQL 语句、处理数据及关闭连接等步骤。同时提供了游标的使用方法和避免中文乱码的解决方案。

连接MySQL:

1. 使用MySQL

是连接MySQL主流方法,也较为成熟,有较多的文档可以参考。

【安装方法】:似乎比较复杂,前提条件较多。整理的综合参照文档:http://blog.chinaunix.net/uid-24567872-id-3978901.html  http://blog.youkuaiyun.com/acdreamers/article/details/21186457  http://blog.youkuaiyun.com/caianye/article/details/6911079  安装包下载参考地址:似乎两者中一个 https://pypi.python.org/pypi/MySQL-python   https://sourceforge.net/projects/mysql-python/

【版本适用】:向上兼容Python 2.4及其以上 处理命令语法一样

【使用方法】:参考 http://blog.youkuaiyun.com/lishan9133/article/details/7024989 http://blog.youkuaiyun.com/acdreamers/article/details/21186457

上述两篇文文档一起看,非常有收获和帮助

简单总结:

1. 首先建立数据库连接
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable")
 
比较常用的参数包括
host: 连接的数据库服务器主机名,默认为本地主机(localhost)。
user:数据库登陆名.默认是当前用户.
passwd:数据库登陆的秘密.默认为空.
db:要使用的数据库名.没有默认值.
port:MySQL服务使用的TCP端口.默认是3306.
conn连接有两个重要的方法commit【提交新增和修改】,rollback【撤销新增或修改】

2. 执行数据库操作
n=cursor.execute(sql,param) 
我们要使用连接对象获得一个cursor(游标)对象,接下来,我们会使用cursor提供的方法来进行工作。

callproc(self,procname,args)
用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数

execute(self, query, args)
执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数

executemany(self, query, args)
执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数

nextset(self)
移动到下一个结果集

cursor用来接收返回值的方法:

fetchall(self)
接收全部的返回结果行

fetchmany(self, size=None)
接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据

fetchone(self)
返回一条结果行

scroll(self, value, mode='relative')
移动指针到某一行,如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条。


3. 关闭数据库连接

需要分别的关闭指针对象和连接对象.他们有名字相同的方法 
cursor.close() 
conn.close() 


4. *数据库中有中文数据,防止乱码的方法

1 Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
2 MySQL数据库charset=utf-8
3 Python连接MySQL是加上参数 charset=utf8

4 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)






Cursor 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
arraysize                          使用fetchmany方法时,一次取出的结果行数,默认为1
connection                         创建此游标的链接(可选)
description                        返回游标活动状态(7选项元组):(name,type_code,display_size,internal_size,precision,scale,null_ok)
lastrowid                          上次修改的行ID(可选:如果不支持行ID,则返回None
rowcount                           上次execute*()方法处理或影响的行数
callproc(func[,args])              调用储存过程
close()                              关闭游标
execute(op[,args])                执行数据库查询或命令
executemany(op,args)             类似execute()和map()的结合,为给定的所有参数准备执行的数据库查询或命令
fetchone()                           获取查询结果的下一行
fetchmany([size=cursor.arraysize])      获取查询结果的下面size行
fetchall()                            获取查询结果的所有(剩余)行
__iter__()                           为游标创建迭代器对象(可选,参考next())
messages                            游标执行后从数据库中获取的消息列表(元组结合,可选)
next()                                被迭代器用于获取查询结果的下一行(可选,类似fetchone(),参考__iter__())
nextset()                             移动到下一个结果集合(如果支持)
rownumber                            当前结果集中游标的索引(以行为单位,从0开始,可选)
setinputsizes(sizes)               设置允许的最大输入大小(必须有,但是实现是可选的)
setoutputsize(size[,col])         设置大列获取的最大缓冲区大小(必须有,但是实现是可选的)

<think>好的,我现在需要帮助用户找到如何使用Python连接MySQL进行查询的教程和示例代码。首先,用户提供的引用中有三个相关的参考资料,分别提到了安装驱动、连接数据库和执行查询的具体步骤。 首先,我应该整理这些信息,确保结构清晰。用户需要的是步骤化的指导,所以需要分点说明。根据引用[1],安装驱动是第一步,特别是Python 3.x需要使用PyMySQL。然后引用[3]中的示例代码展示了如何导入模块、连接数据库,这可以作为连接步骤的参考。引用[2]和[3]都提到了执行查询和关闭连接的部分,需要整合这些内容。 接下来,我需要确认代码的正确性。例如,使用pymysql.connect的正确参数,如host、port、user等是否正确填写。另外,游标的使用和资源的关闭也是关键,避免数据库连接未释放的问题。用户可能还需要了解如何处理异常,比如在连接失败时捕获异常,这点在引用[2]中有提到错误处理,但示例代码中没有具体展示,可能需要补充。 然后,考虑用户可能的疑问,比如密码和数据库名称需要替换,charset设置的重要性,以及执行查询后获取结果的方法(如fetchall()、fetchone())。这些细节都需要在教程中详细说明,确保用户能够顺利操作。 最后,生成相关问题时要围绕连接MySQL的常见问题,比如驱动选择、参数设置、事务处理等,帮助用户进一步深入学习。需要确保问题具有针对性,能够引导用户解决实际应用中可能遇到的困难。</think>以下是Python连接MySQL数据库进行查询的详细教程和代码示例: ### 一、操作步骤说明 1. **安装驱动模块** - Python 3.x使用`PyMySQL`模块:`pip install pymysql`[^1] - 验证安装:`import pymysql`无报错即成功 2. **建立数据库连接** ```python import pymysql # 创建连接对象(需替换实际参数) connection = pymysql.connect( host=&#39;localhost&#39;, # 数据库地址 port=3306, # 端口号 user=&#39;root&#39;, # 用户名 password=&#39;your_password&#39;, # 密码 database=&#39;test_db&#39;, # 数据库名称 charset=&#39;utf8mb4&#39; # 字符编码[^3] ) ``` 3. **执行SQL查询** ```python try: with connection.cursor() as cursor: # 获取游标对象 # 执行查询语句 sql = "SELECT * FROM users WHERE age > %s" cursor.execute(sql, (18,)) # 参数化查询防止SQL注入 # 获取查询结果 result = cursor.fetchall() # 获取全部数据 for row in result: print(row) finally: connection.close() # 必须关闭连接[^2] ``` ### 二、关键参数说明 | 参数 | 说明 | 示例值 | |------------|---------------------------|-----------------| | host | 数据库服务器地址 | 127.0.0.1 | | port | MySQL服务端口 | 3306 | | user | 数据库用户名 | admin | | password | 数据库密码 | Passw0rd! | | database | 要连接的数据库名称 | customer_db | | charset | 字符集(推荐utf8mb4) | utf8mb4 | ### 三、进阶功能 1. **异常处理** ```python try: conn = pymysql.connect(...) except pymysql.Error as e: print(f"连接失败: {e}") ``` 2. **事务管理** ```python try: conn.begin() # 开启事务 # 执行多个操作... conn.commit() except: conn.rollback() ``` 3. **字典格式返回结果** ```python with conn.cursor(pymysql.cursors.DictCursor) as cursor: cursor.execute("SELECT name, email FROM users") print(cursor.fetchone()) # 输出:{&#39;name&#39;: &#39;John&#39;, &#39;email&#39;: &#39;john@example.com&#39;} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值