Python调用MySQL模块初试

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 学Python喊了很长时间了,总是因为各种各样的理由搁置,昨天想起来前同事推荐过一本Python的书《Python核心编程》第二版,就火速买了一本,Python的学习也算是个开始了。
学Python喊了很长时间了,总是因为各种各样的理由搁置,昨天想起来前同事推荐过一本Python的书《Python核心编程》第二版,就火速买了一本,Python的学习也算是个开始了。

   当然了,我学习还是蛮浮躁的,总是喜欢循序渐进,深入浅出那种,希望短时间的学习能够看到成效,比如做出几个demo,写出几个算法之类的。

   所以我把书先放下,换了个思路来想,如果我学习一门语言,怎么样会和目前的工作结合起来更多呢,bingo,那就调用MySQL吧。

  其实mysql模块有点类似于JDBC的一种角色,提供了访问数据库的一个接口,通过调用相应的接口来访问和操作数据库。那么这个模块就相当于一个jdbc的jar包一般,我们就需要做相应的配置,在Linux里面我们就下载安装即可。

下载的链接是:https://pypi.python.org/pypi/MySQL-python/

目前最新的版本是1.2.5,我们选择源码版本,在Linux下安装。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

其实安装很简单,就是一个python setup.py install即可。

但是实际操作的时候还是有一点问题。

第一个是提示mysql_config不存在,这个主要就是环境变量中访问不到,我们配置一下即可,比如添加软链接。

ln -s  /usr/local/mysql_5.7/bin/mysql_config /usr/bin/mysql_config
然后继续调用下面的命令。
python setup.py install
这次的错误有点奇怪,看起来是gcc的过程报错了,找不到两个文件。
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/local/mysql_5.7/include -I/usr/include/python2.6 -c _mysql.c -o build/temp.linux-x86_64-2.6/_mysql.o
_mysql.c:29:20: error: Python.h: No such file or directory
_mysql.c:40:26: error: structmember.h: No such file or directory
_mysql.c:74: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
_mysql.c:75: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
这个可以通过安装软件包python-devel来解决。
yum install python-devel  
    安装好之后,就是做一个基本的验证,看看模块是否可以正常的加载。

当然还是有点曲折,报错了。

>>> import MySQLdb
/usr/lib64/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /usr/lib64/python2.6/site-packages/MySQL_python-1.2.5-py2.6-linux-x86_64.egg/_mysql.pyc, but /U01/soft1/soft/MySQL-python-1.2.5 is being added to sys.path
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MySQLdb/__init__.py", line 19, in <module>
    import _mysql
  File "build/bdist.linux-x86_64/egg/_mysql.py", line 7, in <module>
  File "build/bdist.linux-x86_64/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient.so.20: cannot open shared object file: No such file or directory
>>>     
这个错误还是这个链接访问不了,我们重新配置一下。
     ln -s /usr/local/mysql_5.7/lib/libmysqlclient.so.20  /usr/lib64/libmysqlclient.so.20
 再次尝试加载模块,如下的方式说明就是成功了。
>>> import MySQLdb
>>>
  接下来就是调用MySQL了。

   就简单些一个调用的脚本,连接到数据库然后创建表,插入数据,删除,退出。

#coding=utf-8
import MySQLdb

conn = MySQLdb.connect(host='127.0.0.1',port=22804,user='root', passwd='',db ='test',)
cur = conn.cursor()
#创建数据表
cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
#插入一条数据
cur.execute("insert into student values('2','Tom','xxxx','9')")
#修改查询条件的数据
cur.execute("update student set class='xxxx' where name = 'Tom'")
#删除查询条件的数据
cur.execute("delete from student where age='9'")

cur.close()
conn.commit()
conn.close()


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
3天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
4天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
25 6
|
5天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
5天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
37 1
|
7天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
47 0
|
8天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
10天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
15天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0
|
19天前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。