pycharm不能使用pymysql_PyCharm的前世今生

欢迎关注公众号 学习资料不会少

PyCharm

工欲善其事,必先利其器。好的开发工具,会令代码编写成为一件轻松而愉快的事情,能显著提高编程效率。这里向读者介绍两款工具,一款是重量级工具,另一款是轻量级工具。下面分别是这两款工具的代码风格,图5-4-1 所示的是PyCharm, 图5-4-2所示的是 Sublime Text 3.

try:

if link_type =0:

self.conn=pymysql.connect (host=host_db,user=user _db.passwd=passwd_db.db=name_db, port=port_db,

charset=’utf8’, cursorclass=pymysql. cursors. DictCursor)#创建数据库链接,返回元祖

else:

self.conn = pymysql.connect (host=host_db,user=user _db.passwd=passwd_db.db=name_db, port=port_db, 

charset=’utf8’)  #创建数据库链接,返回元祖

self.cur=self.conn.cursor( )

except pymysql.Error as e:

print (" 创建数据库连接失败|Mysql Error %d: %s" (e. args[0], e. args[1]))

Logging.basicConfig(filenane=config.src_path+‘/log/syserror.log’,level=logging.  DEBUG, format =' (asct

logger=logging, getlogger (_nane_)

Logger.exception (e)

▲图5-4-1 PyCharm

try:

self.conn-MySQLdb.connect(host=host_db,user=suser-db, passwd=passwd-db,

if link_type==0:

self.cur=self.conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)

else:

self.cur=self.coon.cursor( )#返回元祖

except MysQLdb.Error as e:

print (u" 创建数据库连接失败|Mysql Error %d: %s" % (e.args[0], e.args[1]))

Logging. basicConfig (filename = os. path. join (os.getced(),’./log/syserro

logger = logging. getLogger (_name_)

logger.exception(e)

▲图5-4-2 Sublime Text 3

5. 4. 1 为什么选择PyCharm

PyCharm 有以下优点:

1. PyCharm拥有一般IDE所具备的功能,比如,调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制···

2.PyCharm还提供了一些很好的功能,可用于Django 开发及其他 Web 开发框架。

3. 对初学者而言,PyCharm 比较完整,使用成本低,不需要安装额外的插件。

4.对有基础者而言,PyCharm与其他工具类似,切换成本低。

PyCharm 的缺点是:占用资源多。

5. 4. 2 PyCharm使用基础

1. 新建工程、文件

该步骤已经在5. 2. 2小节详细介绍过,这里不再赘述。

2. 代码运行

运行指定的py代码文件,在代码名称或者代码中的任何地方单击鼠标右键,从弹出的快捷菜单中选择“Runxxx”命令,如图5-4-3所示。

0698da100aabe4626c7c185a6c67d16d.png

▲图5-4-3在PyCharm中运行代码文件

在PyCharm中会显示输出信息,如图5-4-4所示。

‘导出接口数据配置’,

‘update_time’:datetime.datetime(2018,3,7,23,:

1,2]}}”,’status’:1,’create_time’datetime.datetime(2017,9,10,20

:test}}。检查级别中[0,1]代表code和参数完整性检查,执行级别中[0,1]分别

’value_config’:’mytestll’,’status’:1,’create_time’:None,’id’:

‘status’:0,’create_time’:None,’id’:11,’description’:’我的测试2’

[]执行单条查询操作成功

▲图5-4-4 显示输出信息

3. 调试代码

调试代码(俗称“打断点”) 是程序开发中重要的一环,可以帮助开发者定位和查找问题,是开发者必须要会的技能之一。在PyCharm中可按照以下步骤调试代码。

(1) 在想要调试的代码区域前/后单击鼠标,即“打断点”, 如图5-4-5所示。

51   #查询表中单条数据

52    def SelectOne(self,condition):

53     ’’’...   ’’’

57     try:

58        rows_affccet=self.cur.execute(condition)

▲图5-4. 5“打断点”

(2) 开启调试模式,即在代码中的任意位置单击鼠标右键,在弹出的快捷菜单中选择“Debugxxx”命令,如图5-4-6所示。

17e63af0c2db7f3b73498162558483a2.png

▲图5-4-6 开启调式模式

(3) 按F8 键开始调试代码。当代码运行到开始调试的位置时,每按一次F8键就执行一步。在这个过程中,可以通过下方的 Debugger 窗口查看过程数据,如图5-4-7所示。

Variables

      condition={str}’SELECT*FROM config_total WHERE id=1’

      rows_affect={long}1

      self= {operationdb_interface)<_main_.operationdb_interface object at>

▲图5-4-7 查看过程数据

(4) 在调试过程中,系统会用蓝色底色标志出下一步要执行的代码,提示调试者即将走到哪一步。而Debugger 窗口中的蓝色文字,则表示当前代码执行的结果。例如,图5-4-8中所示的第59行代码是将要执行的,而 Debugger 窗口中蓝色字体的 rows_affect 则是已经执行的第58行代码的结果。

Variables

      condition={str}’SELECT*FROM config_total WHERE id=1’

      rows_affect={long}1

   self={operationdb_interface)<_main_.operationdb_interface object at>

▲图 5-4-8 查看进度

(5) 在中断调试后,需要关闭调试模式,否则会开启很多调试窗口,影响其他调试过程的判断。关闭的方法如图5-4-9所示。

Variables

      condition={str}’SELECT*FROM config_total WHERE id=1’

      rows_affect={long}1

      self= {operationdb_interface)<_main_.operationdb_interface object at>

 ▲图5-4-9 关闭调试模式

4. 代码跳转

代码跳转可以帮助我们查看所调用的方法或者函数本身的代码。设置代码跳转的方法是:在按住Ctrl键的同时单击该方法或函数。例如,在opmysql.py中使用了 PyMySQL,如图5-4-10所示。

12     class OperationDbInterface(object):

13            #定义初始化连接数据库

14            def _init_(self,host_db='192.168.0.104".user_db='root',passwd

15                   " " "..." " "

16            _db='root'

24     try:                         variable"_init_py"

25                   if link type

26                      self.conn=pymysql。connect(host_db,user=user_db,passwd

▲图5-4-10 代码跳转

补充知识点

5.5.1 MySQLdb与PyMySQL

MySQLdb与PyMySQL 都是在Python 中操作 MySOL 数据库的包,只不过二者所支持的Python版本不同。MySQLdb支持Python 2, PyMySOL 支持Python 3.这是读者需要注意的地方。

5.5.2 Python 命名规则

(1) 模块或包全部使用小写字母的命名方式,并且以下画线分隔单词,如:get_sign。

(2) 类或异常使用每个单词首字母大写的命名方式,如:OperationDblnterface。

(3) 全局或类常量全部使用大写字母的命名方式,并且以下画线分隔单词。

(4) 其余变量(包括方法名、函数名和普通变量名)则是全部使用小写字母的命名方式,并且以下画线分隔单词,如:op_sql。

(5) 以上的内容如果是Python 内部的,则使用双下画线开头命名,如:_ _init_ _,_ _del_ _。

5.5.3 self.cur.scroll 源码分析

如果在 select_all 方法中用到了 self.cur.scroll (O,mode='absolute’) , 那么在运行代码时要将游标的索引加到初始位置,具体介绍如下:

self.cur.execute (condition) #在游标下执行 SQL 语句

self.cur.scroll (0,mode='absolute') #让游标的索引回到初始位置

results =self.cur.fetchall ()   #返回游标中的所有结果

假如测试数据库表中的数据有3条,则表结构如图5-5-1所示。

b78562cbb1be49cee2e04637867e6101.png

▲图5-5-1 表结构与数据查询

(1) 在游标下执行SQL 语句,则执行的结果被先放在游标中。

(2) 在游标下执行scroll 方法,如果不清楚这一步具体是做什么的,则可以先看 Python源码是怎么解释的,如图5-5-2所示。

def scroll(self,value,mode='relative'):

      " " "Scroll the cursor in the result set to a new position according

      to mode.

      If mode is 'relative' (default),value is taken as offset: to

      the current position in the result set, if set to 'absolute',

      value states an absolute target position." " "

      self._check_executed()

      if mode ==' relative'

            r = value 

      else:

            self.errorhandler(self. ProgramingError,

                                        unkonow scroll mode %s " % repr(mode))

      if r < 0 or r>=len(self._rows):

            self.errorhandler(self,IndexError. " out of range")

      self.rownumber=r

▲图5-5-2 scroll 方法的源码

(3) 在游标下执行fetchall 方法,看一下 Python 源码是怎么解释的,如图5-5-3所示。

def fetchall(self):

      " " "Fetchs all available rows from the cursor. " " "

      self._check_executed()

      if self.rownumber:

          result =  self._rows[ self.rownumber:]

      else:

          result = self._rows

      self.rownumber = len(self.rows)

      return result

▲图5-5-3 fetchall 方法的源码

(4) 设置游标的位置。

可以通过 cursor.scroll (position,mode="relative|absolute") 方法,来设置相对位置游标和绝对位置游标。

方法参数描述:

①position: 游标位置(游标位置从0开始)。

② mode: 游标位置的模式,包括以下两种。

● relative: 默认模式,相对当前位置(即执行 scroll 方法时游标的位置)。

● absolute: 绝对位置。

例如:

   mode=relative,position=1: 设置游标位置为“当前位置+1”, 即向下移动一个位置。

mode=absolute,position=2: 将游标移动到索引为2. 的位置,无论当前位置在哪里。

a7e1f9cc3609458582ab483f80ff336d.png

往期精彩文章

喜报来了!凡猫学员薪资最高16K!

金融行业软件测试介绍

2020年为什么大家都开始学习自动化测试?

学习测试开发前 你需要掌握的python 代码水平

1万+软件测试人员都在学的精品课程免费送,大家别错过

5f1e5eeea5d315f57aecbbd1cd1b61c1.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值