python3连接oracle数据库真操蛋_为64位Windows7的Python3安装MySQLdb

Install 64-bit MySQLdb for Python 3 on Windows 7

为64位Windows7的Pyhton3安装MySQLdb

原文在此

Jesus Rollerblading Christ. It all started as a simple idea: I would install Django and start working on this web app idea I had and use it as a chance to learn more about Python and Django. I also decided to go with MySQL as the database for it since I already have a MySQL server installed on my home computer from previous projects. Little did I know that since I had chosen to go with Python 3, I was in for several evenings of pain and agony dealing with MySQLdb. After an emotional rollercoaster of build path fuckery that made me want to claw my eyes out, I finally got it working: I can use MySQLdb for Python 3.2 on Windows 7 64-bit. Here’s my tale in case you find yourself in the same situation and begin to ask yourself, “Why the fuck do people put up with this?”

基督尼玛个耶稣.这一切始于一个简单的想法:我想装Django然后写个网站,并用这个机会多学点Python和Djiango的知识.我理所当然的选MySQL当数据库,因为在我家里的那台电脑上装着之前的一个项目里用到的MySQL服务.我从没想到因为选择Python3,让我接下来的几个夜晚都因为处理MySQLdb的问题而过的痛苦.之后的没用的构建路径让我情绪很不稳定,都想抓出自己的眼睛.最后总算是搞定了:我可以在windows 7 64位的Python3中使用MySQLdb了.这就是我的故事,免得你和我踏进同意个坑然后抬头问苍天:"真的有人能搞定这种操蛋事?"

The Setup

安装

Like I said, this is all because I was stupid enough to try to install Django 1.5 on Windows 7 using 64-bit Python 3.2 against a MySQL database server. FUCKIN’ N00B, HOW DARE YOU!

就像我刚刚说的,这一切都是因为我特傻叉想在windows 7 64位下,Python 3.2中安装Django 1.5 然后使用MySQL数据库.你也想这么干?真有胆子啊小菜鸟.

The first warning should’ve been that in Django’s docs they explicitly mention that the latest release of MySQLdb doesn’t support Python 3. “No problem”, I thought, “I’ve made a living off of dealing with software build bullshit, I can handle this.”

第一个警告来自Django官方文档,明确提及最新版的MySQLdb不支持Python 3.(译注:本文发表于2013年6月,直到2016年的今天MySQLdb依然不支持Py3),"没问题",我想,"我就算干这行的,我能搞定"

Getting Started

准备开始

So I had to download a few things to get going:

所以我必须得下几个东西来搞定这事

1.First I double checked the version of the MySQL server on my computer (which I had installed via Zend Server some time ago). It’s 5.1.43, so then I went hunting on MySQL’s website for a full binary + headers + libs package and found it on http://downloads.mysql.com/ar... So I downloaded the 64-bit zip (I figured since I have 64-bit Python, but it probably didn’t matter). Then I just unpacked that zip to my C:\

1.首先我检查了我电脑上的MySQL版本(通过Zend Server装的MySQL已经有一段时间了),是5.1.43,我去MySQL官网上找二进制包和链接库,找到了这个 http://downloads.mysql.com/ar...译注,新链接应该是http://dev.mysql.com/download...所以我下载了[这个]3(我想因为我用的是64位python,但是那并不重要),把它解压到C盘

2.Next I downloaded the MySQL-for-Python-3 package the good Django folks suggested in their docs and unpacked that to a separate folder on C:\

2.接下来,下载MySQL-for-Python-3,Django官方建议的包,解压到C盘的另一个文件夹

3.Also, I already have Visual Studio 2012 installed, so I had all the C compilers and shit at my disposal. Yay.

3.我已经安装了VS2012,C编译器的问题就搞定了.Yay.

The Blood and Guts

血雨腥风

After much trial and error and googling. This is what I came up with to make it work:

在不断的GOOGLE和试验后,下面是我总结出来的方法:

1.Open up a cmd prompt

1.打开CMD

2.Since I have Visual Studio 2012 I had to trick their (not sure if it’s Python’s or MySQLdb’s) stupid build process by pointing them to my Visual Studio 2012 toolset: SET VS90COMNTOOLS=%VS110COMNTOOLS%

2.因为我装的是VS2012 ,所以我不得不伪造编译路径到我的VS2012命令行SET VS90COMNTOOLS=%VS110COMNTOOLS%

3.Then I cd’ed into the MySQL-for-Python-3 directory I unpacked earlier and edited the site.cfg (not in notepad..) file to change the mysql_location to point to the directory I unpacked the MySQL binary+header+libs package to earlier (e.g. mysql_location = C:mysql-5.1.43-winx64)

3.然后cd进入之前解压的MySQL-for-Python-3的文件夹,编辑site.cfg(不要在记事本中编辑..)文件,更改mysql_location指向之前解压的MySQL二进制包和链接库的文件夹(例如:mysql_location = C:mysql-5.1.43-winx64)

4.Next, I had to edit the _mysql.c file (again, not in notepad) in MySQL-for-Python-3 to change line 35 from my_config.h to config-win.h

4.接下来,编辑_mysql.c文件(同理,不要在记事本中编辑),把35行的my_config.h改成config-win.h

5.Then, I edited my Python distribution’s C:Python32Libdistutilsmsvc9compiler.py to add a line after line 638 (ld_args.append(‘/MANIFESTFILE:’ + temp_manifest)) as: ld_args.append(‘/MANIFEST’). Why? Cause this dude said so, and it worked.

5.继续,编辑Python3目录下Libdistutilsmsvc9compiler.py文件,在638行(译注:在python3.5中是673行,具体视情况而定)后面增加如下内容(ld_args.append(‘/MANIFESTFILE:’ + temp_manifest))

6.Oh yeah, and I had to edit the MySQL-for-Python-3 file setup_windows.py to change ‘lib’ to ‘lib/opt’ on line 17’s setting of library_dirs cause otherwise it couldn’t find the goddamn MySQL libs.

6.最后,编辑 MySQL-for-Python-3里的setup_windows.py文件,把17行处(位置依然视情况而定)library_dirs里的lib改成lib/opt,因为其他地方找不到该死的MySQL链接库

And then FINALLY I was able to build and install the thing:

最后做的就是编译和安装的工作了:

C:MySQL-for-Python-3-master>python setup.py build

running build

running build_py

copying MySQLdbrelease.py -> buildlib.win-amd64-3.2MySQLdb

running build_ext

C:MySQL-for-Python-3-master>python setup.py install

And it fucking worked!

终于他喵的能用了!

So yeah, I’m sure some enlightened Python god will tell me I brought this pain upon myself given my version choices (and please tell me how stupid I am for using Windows), but it’s crap like this that makes me want to run screaming and crying back into Visual Studio/C#’s warm embrace, or at least PHP’s bony grasp…

好吧,我知道一些牛逼的Python大神会告诉我你这是自作自受,选这种版本来搞(还请告诉我这笨蛋到底要怎么用Windows),但那些都是让我哭着回到Visual Studio/C#的温暖怀抱或者让我去学PHP皮毛的废话罢了

Anyway, if you’re running into similar issues trying to force MySQLdb’s square peg into Python 3’s round hole, I hope this helps.

总之,如果你遇到类似的在python3用MySQLdb问题,我希望这个可以帮到你

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每个程序员都应该知道的8个Linux命令

每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令&a…

python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...

目录:一、字典二、元祖三、字符串方法、切片四、非空即真,非0即真五、文件正文一、字典字典d {username:xiaohei,id:1,grand:天马座,addr:北京,age:29}1、增加d {username:xiaohei,id:1,grand:天马座,addr:北京,age:29}#增:2个方法d[money] …

java hotspot 是什么_什么是HotSpot

Java是解释语言,但并不意味着它一定被解释执行。早期的虚拟机确实一条一条指令解释执行,但人们发现这样效率太低,不满足各种要求,因此出现了许多其它虚拟机,如JIT的虚拟机。HotSpot也是类似一种虚拟机,自从…

积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...

积分和人民币比率从应用程序的旧版本迁移到应用程序的现代化版本时,一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中,我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前,我必须承认&#xff0…

Java集合类原理详解

文章目录1 集合框架1.1 集合框架概述1.1.1 容器简介1.1.1 容器的分类1.2 Collection1.2.1 常用方法1.2.2 迭代器1.3 List1.3.1 概述1.3.2 常用方法1.3.3 实现原理1.4 Map1.4.1 概述1.4.2 常用方法1.4.3 Comparable 接口1.4.4 实现原理1.4.5 覆写 hashCode()1.5 Set1.5.1 概述1.…

sql安装联机丛书提示发生网络错误_速达软件:安装问题解答

问题Q&A在安装MSDE数据库时,出现安装程序倒退的情况解决方案:这是以前装过SQL Server数据库或MSDE数据库,没有卸载干净.解决办法重装操作系统。安装MSDE数据库时,系统出现“读取文件C:\program files\Microsoft sql sever\mssql\data\msd…

java分布式系统开发_从微服务到分布式系统-Java开发人员生存指南

java分布式系统开发感觉像是对微服务的炒作正在慢慢地落到实处,并且我们的行业开始意识到,根据微服务背后的体系结构范式无法通过仅在现有组件之上公开一些HTTP接口来轻松创建一个系统。 。 我们似乎确实同意必须进行服务优化的基础架构,文化…

java 调整jvm_eclipse修改jvm参数调优方法(2种)

本文介绍了eclipse修改jvm参数调优方法(2种),分享给大家,具体如下:一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,…

python对分组进行排序_如何按排序顺序将列表中的项目分组?

由于您希望对输出进行排序,所以可以根据第一个元素对原始列表进行排序>>> first lambda x: x[0]>>> one_sorted sorted(one, keyfirst)然后您可以根据第一个元素使用^{}对元素进行分组,如下所示^{pr2}$因为您想按升序给组分配数字&a…

链表数据结构原理图/内存结构图/内存图

单项链表内存结构图(也叫原理图) 单项链表内存结构图

java web源代码_检测Java Web应用程序而无需修改其源代码

java web源代码与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口。 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Servlet来实现的。 使用JDBC接口java.sql.Statement和java.sql.Connection实现数据库交互。 这些标准几乎是…

反射与泛型 java_Java的反射 和 泛型的一个问题

aluckdog模板方法在编译过程中类型擦除:update(T,UpdateOperations)退化成update(Object,UpdateOperations);update(Query,UpdateOperations)退化成update(Query,UpdateOperations);morphia的update方法不光是一个模板方法,还是一…

迭代器原理图

原理图&#xff1a; Iterator<String> it Collection.iterator();it 是集合Collection的视图&#xff0c;迭代器其实就是视图&#xff08;类似数据库的 view&#xff09;&#xff0c;可以理解为一张单列多行的表&#xff0c;如下图所示&#xff1a; 有人理解成单行多…

neo4j python 算法_图论与图学习(二):图算法

选自towardsdatascience作者&#xff1a;Mal Fabien机器之心编译参与&#xff1a;熊猫图(graph)近来正逐渐变成机器学习的一大核心领域&#xff0c;比如你可以通过预测潜在的连接来理解社交网络的结构、检测欺诈、理解汽车租赁服务的消费者行为或进行实时推荐。近日&#xff0c…

cobol和java_现代化历险:策略+将COBOL转换为Java的示例

cobol和java在Keyhole Software&#xff0c;我们在很大程度上是一家现代化公司。 我们有一些顾问&#xff0c;专门研究将旧的代码迁移到新的&#xff0c;翻新的残旧代码库&#xff0c;并为大多数已经被供应商锁定的企业设计更光明的未来。 作为这些经验的一个有趣的副作用&…

c# mysql sdr_C#结合数据库实现验证识别ID卡内容的方法

本文所述实例为C#结合数据库&#xff0c;来验证所识别的ID卡内容&#xff0c;通过本实例代码&#xff0c;用户可以轻松实现对ID卡会员信息的验证。该实例代码可实现读取数据库&#xff0c;进而逐步实现数据库连接&#xff0c;数据库读取&#xff0c;ID卡读取&#xff0c;ID卡信…

递归算法 流程图_什么是算法?如何学习算法?算法入门的学习路径

什么是算法&#xff1f;有一个很著名的公式 “程序数据结构算法”。曾经跟朋友吃饭的时候我问他什么是算法&#xff0c;他说算法嘛&#xff0c;就是一套方法&#xff0c;需要的时候拿过来&#xff0c;套用就可以&#xff0c;我吐槽他&#xff0c;他说的是小学数学题的算法&…

java webmethod 参数_java详解Spring接收web请求参数的方式

本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你们有所帮助。1 查询参数请求格式&#xff1a;url?参数1值1&参数2值2...同时适用于GET和POST方式spring处理查询参数的方法又…

envoy重试_具有Envoy代理的微服务模式,第二部分:超时和重试

envoy重试该博客是系列文章的一部分&#xff0c;该系列文章更深入地介绍了Envoy Proxy和Istio.io &#xff0c;以及它如何实现一种更优雅的连接和管理微服务的方式。 跟随我christianposta &#xff0c;紧跟这些博客文章的发布。 什么是Envoy代理 &#xff0c;它如何工作&…

python中字符串格式化的形式_Python中format函数字符串格式化入门

格式化在程序开发中非常常见&#xff0c;大家肯定不陌生&#xff0c;Python中也存在多重格式化方式&#xff0c;format函数就是其中一种。函数原型format(value[, format_spec])参数意义value&#xff1a; 需要被格式化的字符串format_spec&#xff1a; 格式化的格式函数定义与…