作为初学才,学起python,是挺快,但是也不免常常出些小错。在访问sqlite3的时候,我写了下边的测试代码。
文件test.py是utf-8编码的,OK,结果没问题。
#!/usr/bin/envpython
#coding=utf-8
importsqlite3
#con=sqlite3.connect(r"sqlite.db")
con=sqlite3.connect(r"e: estsqlite3.db")
#con.text_factory=str
cur=con.cursor()
#cur.execute("insertintobasvslvoy(vslcode,voyage,vslename)values(?,?,?)",(u'tt',u'tt',u'tt'))
cur.execute("insertintot1values(?,?)",(10,u'中文测试gbk10'))
con.commit()
cur.execute(u"select*fromt1wherecol2like'中%'")
forrowincur.fetchall():
printrow[0],row[1].encode('gbk')
con.close()
结果如下:
Processstarted>>>
10中文测试gbk10
10中文测试gbk10
5中
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10
10中文测试gbk10<<<Processfinished.
可是,当我把文件编码调整成ansi格式的时候,上边程序没办法跑。
结果将文件内容改成下边的样子:
#!/usr/bin/envpython
#coding=utf-8
importsqlite3
#con=sqlite3.connect(r"sqlite.db")
con=sqlite3.connect(r"e: estsqlite3.db")
#con.text_factory=str
cur=con.cursor()
#cur.execute("insertintobasvslvoy(vslcode,voyage,vslename)values(?,?,?)",(u'tt',u'tt',u'tt'))
cur.execute("insertintot1values(?,?)",(10,'中文测试gbk10'.decode('gbk')))
con.commit()
cur.execute("select*fromt1wherecol2like'"+'中'.decode('gbk')+"%'")
forrowincur.fetchall():
printrow[0],row[1].encode('gbk')
con.close()
这样,出现的结果跟上边一样。
问题的关键就是#coding=utf-8,同时文件编码也要是utf-8,才能让结果保持一致。
看看下边的简单例子就知道:
>>>a='中文'
>>>b=u'中文'
>>>a
'ÖÐÎÄ'
>>>b
u'中文'
>>>a.decode('gbk')
u'中文'
>>>b==a.decode('gbk')
True
如果将上边的例子放到一个.py文件当中,分别采用utf-8编码和ansi编码('cp936'),结果可能就是分别为True和False。
分享到:
相关推荐
4.[python入门教程]Python3解决中文字符输出乱码的方法 5.[python入门教程]Python运行错误详解 6.[python入门教程]Python面试基础知识大全 7.[python入门教程]常用Python模版库大全 8.[python入门教程]在IIS下配置...
* decimal:python中的float使用双精度的二进制浮点编码来表示的,这种编码导致了小数不能被精确的表示,例如0.1实际上内存中为0.100000000000000001,还有3*0.1 == 0.3 为False. decimal就是为了解决类似的问题的,...
使用 aiosql,您可以在.sql文件中组织 SQL 语句,将它们作为调用方法加载到 python 应用程序中,而不会像使用任何其他 SQL 文件一样失去使用它们的能力。 该项目支持开箱即用的 SQLite 和 PostgreSQL 的标准和基于...
4.22 在表达式中处理异常 176 4.23 确保名字已经在给定模块中被定义 178 第5章 搜索和排序 180 引言 180 5.1 对字典排序 185 5.2 不区分大小写对字符串列表排序 185 5.3 根据对象的属性将对象列表排序 187 ...
熟练使用正则表达式处理字符串,熟练使用Python读写文本文件与二进制文件,了解Python程序的调试方法,熟练运用Python编写面向对象程序,掌握使用Python操作SQLite数据库的方法,掌Python+pandas进行数据处理的基本...
非常适合想要深入学习并使用Python进行数据分析的读者,无论是新手还是有一定Python使用基础的读者,都将快速成为一名数据分析专家。 作者简介 Ivan Idris,实验物理学硕士,学位论文侧重于应用计算机科学。毕业后...
使用aiosql,您可以将SQL语句组织为.sql文件,将它们作为调用方法加载到python应用程序中,而又不会像其他任何SQL文件一样失去使用它们的能力。 该项目支持SQLite和PostgreSQL基于标准和基于的驱动程序( , , ,...
这是一个通过标准Python DB-API接口使用PyQT和SQLite的演示示例。 它被创建为用作教程或参考。 它使用QtWidgets作为接口,使用QTableView显示SQL查询结果,使用pygments突出显示语法,使用sqlite3进行数据库连接。 ...
地产爬虫:使用python+requests库,抓取ajax请求返回的json数据。 直接字符串截取,采用python低级编程方法,存储到自带sqlite3数据库。 全程未设延迟,未设代理,未设cookie,使用时请自行添加反爬措施。
开发它的重点是实现简单自然的混合语言编程方法。 直接享受这些语言的优势。 如果需要以下语言的混合语言编程库,请使用Knife: 可以直接编写这些语言,而无需进行诸如初始化和终结之类的琐碎工作 避免sprintf(...)...
久负盛名的 Python 入门经典针对 Python 3 全新升级十个出色的项目,让你尽快可以使用 Python 解决实际问题目录第 1章 快速上手:基础知识 ........................ 1 1.1 交互式解释器 .............................
流结果 用法 请参阅,以获取API端点的文档... 对于已安装的卷sqlite数据库,设置为sqlite:////path/to/volume/db.sqlite对于postgresql://host:port/db数据库,设置为postgresql://host:port/db ALLOWED_HOSTS 以逗号
查看此程序的一种方法是,将其视为bash的简单hashmap实用程序,该实用程序将一组字符串(标签)与另一个字符串(URL)相关联。 随意找到其他使用此程序的方法! 它基于sqlite数据库,但支持json或msgpack的输入/...
请参阅config.py和config_local.py ,后者用于设置特定于环境的设置,例如数据库连接字符串,记录最低严重性或允许在开发环境中使用CORS 数据库 我正在使用SQLite。由于使用了SQLAlchemy(声明性系统),只需更改...
Web界面,用于使用搜索您的代码, 是作为插件构建的 演示版 在试用该插件,您可以在其中跨Datasette的源代码和所属的所有datasette-*插件运行正则表达式搜索。 一些示例搜索: -正则表达式搜索with.*AsyncClient ...
使用Python交付一个Web界面,用于管理基于Docker的开源软件虚拟实验室。 该产品由Poc2Ops提供并维护。 目前,它仍在积极开发中。 用法 web.py展示了一个基于CherryPy的Web应用程序。 cleanup.py每隔两分钟删除所有...
该机器人使用SQLite数据库存储配置和已发布的提要。 因此可以配置为在同一数据库中使用多个漫游器,并且不需要多个实例。 安装 跑步 pip install feedparser pip install facepy 安装feedDiasp依赖项。 跑步 git ...
这种方法使使用C ++轻松开发面向数据库的程序变得更加容易。 您可以将此语言用作独立语言或C ++框架。 我开发此框架的理念是受JAVA编程语言和Python编程语言启发的。 数据类型有预构建类,称为数字字符串和十进制。...
默认情况下,数据使用Sqlite数据库存储,但可选地支持MySql。 数据被加载到基于会话的内存中,以加快搜索速度。 会话通过Cookie标头以及用户名和密码的身份验证进行管理。 翻译记忆库被分配了一个“所有者”,可以...
8.4 网络通信的中文乱码问题 8.5 WebKit应用 8.5.1 WebKjt概述 8.5.2 WebView浏览网页 8.5.3 WebView与Java 8.6 WtFi介绍 8.7 蓝牙 8.8 小结 第9章 Android特色开发 9.1 传感器 9.2 语音识别 9.3 GoogleMap 9.3.1 ...