在python3下使用peewee

在python3下使用peewee-2.1.4做ORM。连接MySQL数据库,提示需要MySQLdb模块,发现MySQLdb模块不支持python3,各种折腾、google不得其法。

然后又试着使用MySQL官方forPython驱动 Connector/Python
需要对qeewee代码改动
改动的渐入佳境,沾沾自喜中发现peewee的代码中有如下片段

try:
import MySQLdb as mysql
except ImportError:
try:
import pymysql as mysql
except ImportError:
mysql = None

基本上就是说如果找不到MySQLdb那么就找pymysql,

于是在https://pypi.python.org/pypi搜索pymysql发现PyMySQL3 0.5
折腾了一天的python3中使用peewee连接mysql告破。

安装PyMySQL3 0.5

wget https://pypi.python.org/packages/source/P/PyMySQL3/PyMySQL3-0.5.tar.gz

tar -xzf PyMySQL3-0.5.tar.gz

cd PyMySQL3-0.5

sudo python3 setup.py install

接着将

try:
import MySQLdb as mysql
except ImportError:
try:
import pymysql as mysql
except ImportError:
mysql = None

改为

try:
import pymysql as mysql
except ImportError:
try:
import MySQLdb as mysql
except ImportError:
mysql = None

这里还有一点需注意, python3中,粗略地说 .... 在Python 3,所有的字符串都是使用Unicode编码的字符序列, 无需use_unicode=True,

所以将peewee.py 1882行的 use_unicode=True 注释. 否则会出现编码错误.

时间: 2024-10-14 06:07:00

在python3下使用peewee的相关文章

python3下安装aiohttp遇到过的那些坑

python3下安装aiohttp遇到过的那些坑 最近需要用到aiohttp这个库,在安装过程中遇到很多坑.google.baidu后,依然没有找到合适的解决方案. 后来通过去python官方的PyPI查看aiohttp库,才发现一些问题,几经折腾,最后终于成功的在python3下安装’aiohttp’. 在这里跟大家分享一下被坑的过程. 先说一下环境.win7,64位.电脑里安装的python有3.5和3.6两个版本. 1. python3.6下安装aiohttp python3.6环境下,已

Python3下开启科学计算模式

Python(x,y)是一款很好的Python2科学计算的集成开发环境 但是Spyder,IPython感觉用起来总没有Winge 101来得流畅 而且Python3的出现,众多模块也具备了3的相对应版本 之前在Python3下开启pylab画图等模式时,总会出现许多问题 所以,总结了一下 import numpy as npimport scipy as spimport matplotlib as mplimport matplotlib.pyplot as pltfrom pylab im

Python3下map函数的问题

今天在群里有人问题,他的Python程序在家里运行好好的,但在公司一运行,就出问题了,查来查去查不出来,于是我就把他的程序调转过来看了一下,发现又是Python2.7与Python3的问题.代码是做了一个可定义任意位数的水仙花数函数 def fn(n):     rs = []     for i in range(pow(10,n-1),pow(10,n)):         rs = map(int, str(i))         sum = 0         for k in rang

论python3下“多态”与“继承”中坑

1.背景: 近日切换到python3后,发现python3在多态处理上,有一些比较有意思的情况,特别记载,供大家参考... 以廖老师的python3教程中的animal 和dog的继承一节的代码做例子,上代码先: #!/usr/bin/env python3 # -*- coding: utf-8 -*- class Animal(object): def run1(self): print('Animal is running 1...') def run2(self): self.run1(

python3下django连接mysql数据库

1.安装pymysql pip install pymysql 有一点需要注意,有的系统(比如ubuntu16.04)同时安装了python2和python3,而比较新的django需要在python3下运行,所以在安装pymysql时可能要使用命令 pip3 install pymysql 进行安装. 2.修改项目settings.py 找到并修改DATABASES为如下形式: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.m

Python3 下 Redis 返回 bytes 类型的问题

Python3 下 Redis 默认返回 bytes 类型数据,而 Python3 下 bytes 类型和 str 类型不能直接互用,容易出错,解决方法是在建立 Redis 连接的时候将 decode_responses 设置为 True,表示将返回的 bytes 数据解码为 str 数据 def __init__(self, host='localhost', port=6379, db=0, password=None, socket_timeout=None, socket_connect

python3下关于copy和deepcopy中的区别

很多人在学习python3的时候,在字典部分copy和deepcopy感到很困惑,现在针对这两个方法进行区分,即一种是浅复制(copy),一种是深度复制(deepcopy). 开头先下个结论 我们日常所说的复制(自己在电脑硬盘上的复制)就是深复制(deepcopy),即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. 而浅复制(copy)并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签指向的数据

python2.#与python3.#下tkinter 的simpledialog,messagebox

(windows下)python2.x有关Tkinter,simpledialog,messagebox的问题 python3是tkinter,python2中是Tkinter [python] #python2下 from Tkinter import * import tkSimpleDialog as dl import tkMessageBox as mb root=Tk() w=Label(root,text="Label Title") w.pack() mb.showin

Neural networks学习——记录python3下与教材里的python2的不同

在经历了投了多次简历都石沉大海之后,决定继续充电充实自己OTL,于是开始学习神经网络这一块. 找到了深度学习的经典教材.在线网址:http://neuralnetworksanddeeplearning.com 但是这里用的是python2.7,而我自己学的是python3,所以部分代码不能直接搬用,先放上python3和python2有哪些不同. 然后再记录下在学习的过程中,需要改变的内容: 章节一(手写数字的辨认): 1.pickle的改变 这里需要把MNIST里的src文件夹下的mnist