您的位置:首页 > 编程语言 > Python开发

python数据库简单操作

2017-08-25 16:05 381 查看
#python2.7
#mysql


数据库连接:

1.普通连接

import MySQLdb
try:
db = MySQLdb.connect(host = base_ip,user = base_user,charset = 'utf8',passwd = base_pwd,db = base_db)
except Exception as e:
print e

cursor = db.cursor()
cursor.execute('select * from table_name')
cursor.fetchall()
db.close()


2.连接池连接

import pymysql

from DBUtils.PooledDB import PooledDB
mysql_db_pool=PooledDB(creator=pymysql, mincached=1, maxcached=2, maxconnections=100, host=host, port=3306, user=user, passwd=passwd, db=db, charset='utf8', use_unicode=False, blocking=True)#maxconnections为最大连接数

db = mysql_db_pool.connection() # 连接
cursor = db.cursor()
...
#其他基本操作与普通连接数据库无异


数据库更新:

sql = "update table_name set data1='{0}' where data_id='{1}' " .format(up1,flag)
try:
cursor.execute(sql)
cursor.commit()
except Exception as e:
cursor.rollback()
print e
cursor.close()


数据库插入:

sql = """INSERT INTO table_name(
data1,data2,data3,data4)
VALUES (%s,%s,%s,%s)"""
#不管要入库的数据是什么格式都写成 %s
try:
cursor.execute(sql,(data_str,data_text,data_json,data_int))
db.commit()  #
except:
cursor.rollback()
db.close()


<>至于数据库其他操作,一般直接操作数据库<>

MyCli:支持自动补全和语法高亮的 MySQL 客户端
安装:
$ pip install mycli
如果是OS X平台:
$ brew install mycli
怕麻烦就直接使用mysql
#下面mycli命令和mysql可以互换
#大小写无所谓,为了区分而已


建/删除数据库:

#root权限下 #create:建 #drop:删除
mysqladmin -u root -p create DATABASE
Enter password:******


建/删除表:

如果要建一个和已知表相同的表

show create table table_name;
#复制粘贴就行了(和下面一样)


CREATE TABLE IF NOT EXISTS `table_name`(
`data_1` INT UNSIGNED AUTO_INCREMENT,
`data_2` VARCHAR(100) NOT NULL,
`data_3` VARCHAR(40) NOT NULL,
`data_4` DATE,
PRIMARY KEY ( `data_1` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


删除

#删除表中全部或者部分数据
DELETE FROM table_name WHERE data_1 = '123';
#删除表
DROP TABLE table_name;


连接数据库:

mycli -hHOST -uUSER -pPSW


查看/选择数据库

show databases;
use database_name;


查看数据表

show tables;


查找:

SELECT * FROM table_name;
SELECT * FROM table_name LIMIT 5\G;
SELECT data1,data2 FROM table_name WHERE data = '123';
SELECT DISTINCT data1 FROM table_name ;  #无重复查找
#查找id重复数大于1的所有数据
SELECT id,COUNT(id) AS s_count FROM table_name WHERE source=sr GROUP BY id HAVING s_count>1


一个表的数据插入另一个表中

#[input table]
INSERT INTO target SELECT * FROM source;
INSERT IGNORE INTO target SELECT * FROM source; #忽略键值重复的
REPLACE INTO target SELECT * FROM source; #替换键值重复的


导出数据本地:

$ mysqldump -hHOST -uUSER -pPSW database_name table_name > tmp.sql


从本地导入数据:

$ mysqlimport -hHOST -uUSER -pPSW --local database_name tmp.sql


写在最后

关于linux/unix下mysql的命令设置

编辑~/.bashrc文件,加入下面语句
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin
编辑~/.bash_profile文件,加入下面语句
source ~/.bashrc

完成后mysql命令便会永久生效
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息