一、MySQLdb包的安装 1. 在win环境下,下载MySQL-python-1.2.3,有两种方式: (1) 下载src源码.tar.gz (这个源码需要build编译再安装.egg包(当于.jar包)); 不过这种方法之后需要修改环境变量和MySQLdb.conf文件夹里的配置文件等等,具体网上去搜对应版本
一、MySQLdb包的安装
1. 在win环境下,下载MySQL-python-1.2.3,有两种方式:
(1) 下载src源码.tar.gz(这个源码需要build编译再安装.egg包(当于.jar包));
不过这种方法之后需要修改环境变量和MySQLdb.conf文件夹里的配置文件等等,具体网上去搜对应版本,我用的第二种方法,在python命令行里直接import MySQLdb;没有出现任何问题。
(2) 直接下载MySQL-python-1.2.3.exe安装包(双击直接安装);
这里直接安装的.exe,在python命令行里import没问题,在PyCharm里import没问题,但在pydev里引入就提示”uncheck package”,估计是pydev这个插件本身就有一些不完善的功能,要不就是最容易忽略的错误:忘记设置环境变量或者环境变量设置的路径错误。
2. 解决eclipse里pydev插件不能引入MySQLdb包的问题:强制编译,而不仅是要在构建路径里引入库文件、.egg包(当于.jar包)等
解决方案:
Eclipse中,windows==>preference==>Pydev中,配置Interpreter-Python的ForcedBuiltins选项卡内容,手动添加内容MySQLdb,将模块强制编译进去。
如果仅操作"构建路径System PYTHONPATH"的内容,引入库文件,无论如何不会解决问题。一定要强制编译进去!!!
二、连接数据库
python连接mysql主要用到了游标cursor来访问,这个是MySQLdb自带的。
补充几个对象的方法和属性:
1.connection的参数:conn=MySQLdb.connect(“localhost”, “root”, “123456”, “testdb”)
亦作conn = MySQLdb.connect(host=’localhost’,user=’root’, passwd=’123456’, db=’testdb’)
注意这里没有写明端口号port=3306,是因为MySQLdb默认端口号为3306,不用指定,如果你自己改了,就要写上。
connection的参数:
- host,连接的数据库服务器主机名,默认为本地主机(localhost)。
- user,连接数据库的用户名,默认为当前用户。
- passwd,连接密码,没有默认值。
- db,连接的数据库名,没有默认值。
- port,指定数据库服务器的连接端口,默认是3306
- conv,将文字映射到Python类型的字典。默认为MySQLdb.converters.conversions
- cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。
- compress,启用协议压缩功能。
- named_pipe,在windows中,与一个命名管道相连接。
- init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。
- read_default_file,使用指定的MySQL配置文件。
- read_default_group,读取的默认组。
- unix_socket,在unix中,连接使用的套接字,默认使用TCP。
2.connection(连接)对象
方法名 作用
conn. close() 关闭数据库
conn.commit() 提交当前事务
----- 必须sql写完后要提交commit(),尤其是insert, update, delete时,否则数据库没有变化!!!
----- 而像select这种普通的查询,不涉及修改数据库的,是否commit()没有关系
conn.rollback() 取消当前事务
---- 异常处理except Exception:里最好还是加上回滚rollback()
conn.cursor() 获取当前连接的游标对象
conn.rrorhandler(cxn,cur,errcls,errval) 作为已给游标的句柄
3.cursor游标对象属性及方法
(1) cursor执行命令的方法
callproc(sql, procname, args) 执行存储过程,接收参数为存储过程名和参数列表,返回值为受影响的行数
execute(sql,param, args) 执行单条sql语句,接收参数param,返回值为args受影响的行数
executemany(sql,param, args) 执行多条sql语句,接收参数param,返回值为args受影响的行数
next() 使用迭代对象得到结果的下一行
nextset() / nestset(self): 移动到下一个结果集(如果支持的话)
close() 关闭游标
connection 创建此游标的连接(可选)
(2) cursor用来接收返回值的方法
fetchone() 返回一条结果行
fetchall(self) 匹配所有剩余结果
fetchmany(size-cursor,arraysize) 匹配结果的下几行
rowcount 读取数据库表中的行数,最后一次execute()返回或影响的行数
scroll(self, value, mode=’relative’):移动指针到某一行。如果mode=’relative’,则表示从当前所在行移动value条,如果mode=’absolute’,则表示从结果集的第一行移动value条
arraysize 使用fetchmany()方法时一次取出的记录数,默认为1
discription 返回游标的活动状态,包括(7元素):
(name,type_code,display_size,internal_size,precision,scale,null_ok)其中name, type_code是必须的。
lastrowid 返回最后更新行的ID(可选),如果数据库不支持,返回None
__iter__() 创建迭代对象(可选,参考next())
messages 游标执行好数据库返回的信息列表(元组集合)
rownumber 当前结果集中游标的索引(从0行开始)
setinput-size(sizes) 设置输入最大值
setoutput-size(sizes[,col]) 设置列输出的缓冲值
三、代码
(1) mysql_1.py
import MySQLdb try: conn = MySQLdb.connect(host='localhost', user='root', passwd='mysql', db='testdb') # 默认port可以不写3306 cursor = conn.cursor() sql = "insert into table1 values('105', 'tomy', 23, 'm', 'U.KK.')" cursor.execute(sql) conn.commit() #提交事务commit() cursor.execute("select * from table1") results = cursor.fetchall() for re in results: print re cursor.close() conn.close() except MySQLdb.Error, e: conn.rollback() #回滚rollback() print "MySQL Error %d: %s" % (e.args[0], e.args[1]) print e
(2) mysql_2.py
# -*-encoding: utf-8 -*- import os import string import sys import MySQLdb # 连接数据库 try: conn = MySQLdb.connect(host='localhost',port=3306, user='root', passwd='mysql', db='testdb') except Exception, e: print e sys.exit() # 获取cursor游标对象来进行操作 cursor = conn.cursor() # 创建表 sql = "create table if not exists test1(name varchar(128) primary key, age int(4))" cursor.execute(sql) print "success create table test1!" # 插入数据 sql = "insert into test1(name, age) values('%s', '%d')" % ("denny", 23) try: cursor.execute(sql) conn.commit() #凡是insert,update,delete都要"提交事务commit()",否则数据库不会改变 print "succeess insert a record!" except Exception, e: conn.rollback() #异常必须回滚rollback() print e # 插入多条数据 sql = "insert into test1(name, age) values (%s, %s)" param = (("tom", 24), ("alice", 25), ("bob", "26")) try: cursor.executemany(sql, param) #批量插入数据时必须用.executemany(sql)而不是.execute(sql),那是单条数据 conn.commit() print "success insert many records!" except Exception, e: conn.rollback() print e # 查询出数据 sql = "select * from test1" cursor.execute(sql) alldata = cursor.fetchall() # 如果有数据返回就循环输出,alldata是个二维列表) if alldata: for rec in alldata: print rec[0], rec[1] # 分别输出,结果为denny 23 # print rec # 也可以直接输出rec,不带下标rec[i], 结果为('denny', 23L) # 关闭连接 cursor.close() conn.close()
控制台输出结果:
SQL表结果:
(3) mysql_3.py (fetchone()示例)
import MySQLdb db = MySQLdb.connect("localhost", "root", "mysql", "testdb" ) cursor = db.cursor() cursor.execute("select * from test1") data = cursor.fetchone() while data!=None: print data[1] data = cursor.fetchone() db.close
(4) mysql_4.py(fetchall()示例)
import MySQLdb db = MySQLdb.connect("localhost", "root", "mysql", "testdb" ) cursor = db.cursor() cursor.execute("select * from test1") datas = cursor.fetchall() for data in datas: print data[1] print cursor.rowcount,"rows in tatal" db.close

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),