linux环境下python怎样操作mysql数据库 在linux系统下,python连接MYSQL数据库,怎么可...
linux python\u600e\u6837\u64cd\u4f5cmysql\u6570\u636e\u5e93\u8868\u4f60\u53ef\u4ee5\u8bbf\u95eePython\u6570\u636e\u5e93\u63a5\u53e3\u53caAPI\u67e5\u770b\u8be6\u7ec6\u7684\u652f\u6301\u6570\u636e\u5e93\u5217\u8868\u3002\u4e0d\u540c\u7684\u6570\u636e\u5e93\u4f60\u9700\u8981\u4e0b\u8f7d\u4e0d\u540c\u7684DB API\u6a21\u5757\uff0c\u4f8b\u5982\u4f60\u9700\u8981\u8bbf\u95eeOracle\u6570\u636e\u5e93\u548cMysql\u6570\u636e\uff0c\u4f60\u9700\u8981\u4e0b\u8f7dOracle\u548cMySQL\u6570\u636e\u5e93\u6a21\u5757\u3002DB-API \u662f\u4e00\u4e2a\u89c4\u8303. \u5b83\u5b9a\u4e49\u4e86\u4e00\u7cfb\u5217\u5fc5\u987b\u7684\u5bf9\u8c61\u548c\u6570\u636e\u5e93\u5b58\u53d6\u65b9\u5f0f, \u4ee5\u4fbf\u4e3a\u5404\u79cd\u5404\u6837\u7684\u5e95\u5c42\u6570\u636e\u5e93\u7cfb\u7edf\u548c\u591a\u79cd\u591a\u6837\u7684\u6570\u636e\u5e93\u63a5\u53e3\u7a0b\u5e8f\u63d0\u4f9b\u4e00\u81f4\u7684\u8bbf\u95ee\u63a5\u53e3 \u3002
Python\u7684DB-API\uff0c\u4e3a\u5927\u591a\u6570\u7684\u6570\u636e\u5e93\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u4f7f\u7528\u5b83\u8fde\u63a5\u5404\u6570\u636e\u5e93\u540e\uff0c\u5c31\u53ef\u4ee5\u7528\u76f8\u540c\u7684\u65b9\u5f0f\u64cd\u4f5c\u5404\u6570\u636e\u5e93\u3002
Python DB-API\u4f7f\u7528\u6d41\u7a0b\uff1a
\u5f15\u5165 API \u6a21\u5757\u3002
\u83b7\u53d6\u4e0e\u6570\u636e\u5e93\u7684\u8fde\u63a5\u3002
\u6267\u884cSQL\u8bed\u53e5\u548c\u5b58\u50a8\u8fc7\u7a0b\u3002
\u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5\u3002
#!/usr/bin/python
# encoding: utf-8
# filename: dbi.py
class DBI:
'''this is a private abstract Database Interface class'''
def __init__(self, **kwg):
self.config = dict(kwg)
def open(self):
'''use special driver to connect RDBMS and generate cursor'''
pass
def close(self):
self.curr.close()
self.conn.close()
self.curr = None
self.conn = None
def __enter__(self):
self.open()
return self
def __exit__(self, *args):
self.close()
...
#!/usr/bin/python
# encoding: utf-8
# filename: mydbi.py
import MySQLdb
import dbi
class MyDBI(DBI):
def open(self):
self.conn = MySQLdb.connect(
host = self.config.get('host','localhost'),
user = self.config.get('user','root'),
passwd = self.config.get('passwd',''),
db = self.config.get('db','mysql'),
charset = self.config.get('charset','utf8'),
use_unicode = self.config.get('use_unicode',True),
)
self.curr = self.conn.cursor()
linux环境下python怎样操作mysql数据库呢?方法如下:
首先在Linux环境下安装mysql-python
1、下载mysql-python
打开终端:
cd /usr/local
sudo wget http://nchc.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz
官网地址:http://sourceforge.net/projects/mysql-python/
2、解压
sudo tar -zxvf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
3、在安装前需进行配置
a、修改setup_posix.py中的mysql_config.path为你mysql安装目录的mysql_config路径
b、修改site.cfg中的threadsafe = False,去掉mysql_config前的注释,并改为mysql_config = /usr/local/mysql/bin/mysql_config
c、执行命令:
export LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql
sudo ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so /usr/lib/libmysqlclient.so.14
sudo ldconfig (这个很重要,否则后面会报错ImportError: libmysqlclient.so.14: cannot open shared object file)
4、编译安装
1)python setup.py build
若未成功的话,需手动安装setuptools:
sudo apt-get install python-setuptools
2)sudo python setup.py install
5、测试
python
>>> import MySQLdb
没有错误,则表示安装成功了。
使用python操作MySQL
使用python连接MySQL,创建数据库,创建表格,插入/查询数据。python_mysql.py代码如下:
效果如图:
若出现类似于此的警告:
/usr/local/lib/python2.6/dist-packages/MySQL_python-1.2.2-py2.6-linux-i686.egg/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated from sets import ImmutableSet
解决办法如下:
找到上面路径MySQLdb下的__init__.py文件
1) 在文件中 "__init__.py"中, 注释掉:
from sets import ImmutableSet
class DBAPISet(ImmutableSet):
新增:
class DBAPISet(frozenset):
2) 在文件"converters.py"中,注释掉 from sets import BaseSet, Set 这一句话。
3) 在文件"converters.py"中, 修改 其中的"Set" 成为 "set" ( 只有两个地方需要修改,即大写改小写)
大概 line 45: return Set([ i for i in s.split(',') if i ]) 改为 return set([ i for i in s.split(',') if i ])
大概 line 129: Set: Set2Str, 改为 set: Set2Str,
1.引入MySQLdb库
import MySQLdb
2.和数据库建立连接
conn=MySQLdb.connect(host="localhost",user="root",passwd="sa",db="mytable",charset="utf8")
提供的connect方法用来和数据库建立连接,接收数个参数,返回连接对象.
比较常用的参数包括
host:数据库主机名.默认是用本地主机.
user:数据库登陆名.默认是当前用户.
passwd:数据库登陆的秘密.默认为空.
db:要使用的数据库名.没有默认值.
port:MySQL服务使用的TCP端口.默认是3306.
charset:数据库编码.
然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚
3.执行sql语句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
首先,我们用使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作.这些方法包括两大类:1.执行命令,2.接收返回值
cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集
cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条.
下面的代码是一个完整的例子.
#使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什么类型,占位符永远都要用%s
sql="insert into cdinfo values(%s,%s,%s,%s,%s)"
#param应该为tuple或者list
param=(title,singer,imgurl,url,alpha)
#执行,如果成功,n的值为1
n=cursor.execute(sql,param)
#再来执行一个查询的操作
cursor.execute("select * from cdinfo")
#我们使用了fetchall这个方法.这样,cds里保存的将会是查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple
cds=cursor.fetchall()
#因为是tuple,所以可以这样使用结果集
print cds[0][3]
#或者直接显示出来,看看结果集的真实样子
print cds
#如果需要批量的插入数据,就这样做
sql="insert into cdinfo values(0,%s,%s,%s,%s,%s)"
#每个值的集合为一个tuple,整个参数集组成一个tuple,或者list
param=((title,singer,imgurl,url,alpha),(title2,singer2,imgurl2,url2,alpha2))
#使用executemany方法来批量的插入数据.这真是一个很酷的方法!
n=cursor.executemany(sql,param)
4.关闭数据库连接
需要分别的关闭指针对象和连接对象.他们有名字相同的方法
cursor.close()
conn.close()
以上方法就可以了。
另外,附MySQLdb的相关资料
更多关于MySQLdb的信息可以查这里:http://mysql-python.sourceforge.net/MySQLdb.html
mysqldb
我一直用这个
绛旓細鎶Linux褰撴垚淇′话鈥斺斿畠鏄釜寰堝ソ鐢ㄧ殑宸ュ叿锛屼粎姝よ屽凡銆俽 linux鎬庝箞鎵撳紑python锛熸槸瑕佽繘鍏python鐨鍛戒护琛岀晫闈箞锛熺洿鎺ュ湪鍛戒护琛岃緭鍏#python涔嬪悗鍥炶溅灏卞彲浠ヤ簡鍟婂鏋滄槸鎯宠杩愯涓涓猵y鏂囦欢鐨勮瘽灏辫緭鍏#pythonfilename.py python鍦linux涓鐨勪綔鐢紵python鍦╨inux閲岄潰涔熸槸涓绉嶇紪绋嬭瑷锛岄傚悎鍍忔爲鑾撴淳杩欑宓屽叆寮忚澶囥
绛旓細鎴戞槸绉戞妧灏廗锛屽笇鏈涙垜鐨勫洖绛斿浣犳湁甯姪銆傛垜鑷繁涔熸湁鍦ㄨ繍琛岀殑centos+django+uwsgi+nginx鐨勭綉绔欍俷ginx閰嶇疆 棣栧厛鍦╪ginx閰嶇疆缃戠珯鐨勬椂鍊欒娉ㄦ剰澧炲姞uwsgi鐨勯厤缃紝濡傚浘锛氶粍鑹插尯鍩熶腑include涓嶇敤绠★紝閲嶈鐨勬槸涓嬮潰鐨剈wsgi_pass127.0.0.1:8112;杩欎釜鍦板潃鏄痷wsgi鏈嶅姟鐨勬湰鍦扮鍙o紝浣犲彲浠ラ殢鎰忚缃紝浣嗘槸瑕佷繚璇佷笉鑳藉啿绐...
绛旓細1銆linux涓瀹夎python3 a銆 鍑嗗缂栬瘧鐜(鐜濡傛灉涓嶅鐨勮瘽锛屽彲鑳介亣鍒板悇绉嶉棶棰橈紝姣斿wget鏃犳硶涓嬭浇https閾炬帴鐨勬枃浠)1 2 yum groupinstall 'Development Tools'yum install zlib-devel bzip2-devel openssl-devel ncurses-devel 2 涓嬭浇 Python3.5浠g爜鍖 wget 鍦ㄥ畨瑁呭寘涓湁涓涓猂EADME鐨勬枃浠讹紝閲岄潰鏈夊啓濡備綍...
绛旓細濡傦細python-debuginfo-2.6.6-29.el6_2.2.x86_64.rpm锛岃繖涓増鏈彿涓瀹氳璺熶綘鎵鐢ㄧ殑python鐗堟湰涓鑷(鍙互rpm -qa|grep python鏌ョ湅浣犲畨瑁呯殑python鐨璇︾粏鐗堟湰鍙)銆侰entos涓嬫壘鍖呭湴鍧涓:http://debuginfo.centos.org/6/x86_64/銆3锛夊氨鍙互杩愯鍛戒护 gdb python pid 杩涜璋冭瘯銆linux涓gdb濡備綍璋冭瘯python...
绛旓細鍦ㄦ墽琛岃剼鏈殑鏃跺欏姞sudo锛屾瘮濡備綘鐨勮剼鏈彨test.py锛岀敤sudo python test.py鎵ц锛屽氨鍙互浜嗭紝浜叉祴鍙敤
绛旓細宸茬粡瀛樺湪python2鐨linux鐜涓婂畨瑁卲ython3锛屾湁涓ょ鏂规硶锛岀涓绉嶆槸鏇挎崲python2锛岀浜岀鏄洿鎺ュ畨瑁卲ython3锛岃屼笉鏇挎崲python2锛岃繖鏍风殑璇濓紝鍦╬ython3杩愯鐨勬椂鍊欙紝灏辫鍐欐垚python3+鍚姩绛夎鍙
绛旓細鏄杩涘叆python鐨鍛戒护琛岀晫闈箞锛熺洿鎺ュ湪鍛戒护琛岃緭鍏 python 涔嬪悗鍥炶溅灏卞彲浠ヤ簡鍟 濡傛灉鏄兂瑕佽繍琛屼竴涓猵y鏂囦欢鐨勮瘽 灏辫緭鍏 python filename.py 鍏嶈垂鎻愪緵鏈鏂Linux鎶鏈暀绋嬩功绫嶏紝鍏ラ棬鑷涔︾睄銆linux灏辫杩欎箞瀛︺嬶紝涓哄紑婧愭妧鏈埍濂借呭姫鍔涘仛寰楁洿澶氭洿濂
绛旓細涔熷氨鏄鎴戦噰鐢Python3.x杩涜寮鍙戯紝閭d箞浣跨敤鐨勫懡浠ゆ槸锛python3 configure.py shell涓嬬殑缁撴灉鏄細lieo@ubuntu:~/download/sip-4.14.2$ python3 configure.py This is SIP 4.14.2 for Python 3.2.3 on linux2.The SIP code generator will be installed in /usr/bin.The sip module will be...
绛旓細浣嗘槸鍓嶆彁鏄繖涓猵y婧愭枃浠跺繀椤昏璧嬩簣鎵ц鏉冮檺锛Linux绯荤粺涓鍙湁鏈夋墽琛屾潈闄愮殑鏂囦欢鎵嶅彲浠ユ墽琛岋紝鍗充究鏄竴涓簩杩涘埗鏂囦欢娌℃湁鍙墽琛屾潈闄愪篃鏄笉鑳借繍琛岀殑锛岀粰鏂囦欢娣诲姞鍙墽琛屾潈闄愮殑鍛戒护鏄細chmod a+x 鏂囦欢璺緞 杩樻湁涓绉嶈繍琛Python py婧愭枃浠剁殑鏂瑰紡涓嶉渶瑕乸y婧愭枃浠舵湁鍙墽琛屾潈闄愶紝鏂规硶鏄敤Python鍛戒护鍔爌y鏂囦欢鍚嶇殑褰㈠紡鏉...
绛旓細缁欎綘centos涓嬫簮鐮佸畨瑁卲y3 鐨勪緥瀛愭妸銆傚鏋滃凡缁忓畨瑁呭ソ浜python34 sudo yum remove python34 缂栬瘧瀹夎 python瀹樼綉鍙负Linux鎻愪緵浜嗘簮鐮侊紝鍥犳鎴戜笅杞絧ython3.6.1鐨勬簮鐮佸帇缂╁寘 绗竴姝ワ紝CentOS瑁呭ソopenssl闈欐佸簱 閿叆浠ヤ笅鍛戒护锛 yum install -y openssl-static 鑻ユ湭瑁呰闈欐佸簱浼氬鑷磒ython3鑷甫鐨刾ip3瀹夎澶...