专栏首页AnRFDevPython 操作 MySQL

Python 操作 MySQL

本文链接Python 操作 MySQL

开发环境与配置

  • win_x64
  • Ubuntu14.04
  • Python3.x

pip安装pymysql模块

直接使用pip安装 pip install pymysql win64上直接在cmd中执行

连接本地数据库

使用模块pymysql连接数据库 本地数据库相关配置请参阅:

#!/usr/bin/python
# coding=utf-8
import pymysql

# 连接本地数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='yourpwd', db='samp_db1', charset='utf8')
cursor = conn.cursor()
cursor.execute('select * from bigstu')
for row in cursor.fetchall():
    print(row)

# 查
cursor.execute('select id, name from bigstu where age > 22')
for res in cursor.fetchall():
    print(str(res[0]) + ", " + res[1])

cursor.close()
print('-- end --')

输出:

(1, '张三', '男', 24, datetime.date(2017, 3, 29), '13666665555')
(6, '小刚', '男', 23, datetime.date(2017, 3, 11), '778899888')
(8, '小霞', '女', 20, datetime.date(2017, 3, 13), '13712345678')
(12, '小智', '男', 21, datetime.date(2017, 3, 7), '13787654321')
1, 张三
6, 小刚
-- end --

可以直接执行sql语句。获得的结果是元组。

sql相似条件查询

SELECT * FROM anindex.subject_basic_table where season_id having '2018';

插入数据

插入一条数据,接上面的代码

insertSql = "insert into bigstu (name, sex, age,  mobile) values ('%s','%s',%d,'%s') "
xiuji = ('秀吉', '男', 15, '13400001111')
cursor.execute(insertSql % xiuji)
conn.commit() # 别忘了提交

添加列

在mobile后面添加一列cash

addCo = "alter table bigstu add cash int after mobile"
cursor.execute(addCo)

如果要设置默认值

addCo = "alter table bigstu add cash int default 0 after mobile"
cursor.execute(addCo)

删除数据

删除 name=秀吉 的数据

deleteSql = "delete from bigstu where name = '%s'"
cursor.execute(deleteSql % '秀吉')

删除列

删除cash列

dropCo = "alter table bigstu drop cash"
cursor.execute(dropCo)

修改数据

更新符合条件的数据

updateSql = "update bigstu set sex = '%s' where name = '%s'"
updateXiuji = ('秀吉', '秀吉') # 秀吉的性别是秀吉
cursor.execute(updateSql % updateXiuji)
conn.commit()

事物处理

给某个记录的cash增加

table = "bigstu"
addCash = "update " + table + " set cash = cash + '%d' where name = '%s'"
lucky = (1000, "秀吉")

try:
    cursor.execute(addCash % lucky)
except Exception as e:
    conn.rollback()
    print("加钱失败了")
else:
    conn.commit()

直接执行SQL语句,十分方便

代码片段

给数据库添加列

从json中读取需要添加的列名,获取当前2个表中所有的列名 整理得出需要插入的列名,然后将列插入到相应的表中

import pymysql
import json
import os
import secureUtils

mapping_keys = json.load(open("key_mapping_db.json", "r"))
db_keys = []  # json中所有的key

for k in mapping_keys.values():
    db_keys.append(k)

conn = pymysql.connect(host='localhost', port=3306, user='root',
                       passwd='*****', db='db_name', charset='utf8')

cursor = conn.cursor()
table_main = "table_main"
main_table_keys = []  # 主表的列名
cursor.execute("show columns from " + table_main)
for row in cursor.fetchall():
    main_table_keys.append(row[0])

staff_table_keys = []
cursor.execute("show columns from table_second")
for row in cursor.fetchall():
    staff_table_keys.append(row[0])

need_to_insert_keys = []
for k in db_keys:
    if k not in staff_table_keys and k not in main_table_keys and k not in need_to_insert_keys:
        need_to_insert_keys.append(k)

print("need to insert " + str(len(need_to_insert_keys)))
print(need_to_insert_keys)
for kn in need_to_insert_keys:
    print("add key to db " + kn)
    cursor.execute("alter table staff_table add " + kn +" text")

conn.close()

将字段字符改变

这里将main_table_keys中的所有字段改为utf8

# change column character set to utf8
for co in main_table_keys:
    change_sql = "alter table " + table_main + " modify " + co + " text character set utf8"
    print(change_sql)
    cursor.execute(change_sql)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python操作MySQL

    关于之前有人提到的Python如何操控MySQL,其实很简单,以pymysql的库为例。

    rare0502
  • python操作mysql

    # rpm -qa |grep MySQL-python 查询是否有mysqldb库 MySQL-python-1.2.3-0.3.c1.1.el6.x86_6...

    py3study
  • Python操作Mysql类

    #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb from warnings import fi...

    苦咖啡
  • Python操作MySQL(2)

    py3study
  • 5.Python操作MySQL

    Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

    changxin7
  • 使用python操作mysql

      python可以使用MYSQLdb来操作数据库。   我们先来建数据库,其SQL语句如下: -- http://www.cnblogs.com/Colin-...

    窗户
  • Python操作MySQL(二) ORM

    SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后...

    py3study
  • python操作Mysql实例

    本文介绍了Python操作mysql,执行SQL语句,获取结果集,遍历结果集,取得某个字段,获取表字段名,将图片插入数据库,执行事务等各种代码实例和详细介绍。

    py3study
  • Python操作MySQL数据库

    数据库python-mysql安装参考:http://blog.phpfs.com/archives/2343.html # -*- coding: UTF-8...

    苦咖啡
  • Python: 操作MySQL数据库

    用户2183996
  • python操作mysql数据库

    py3study
  • python操作mysql数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。

    想偷懒的程序员
  • Python操作MySQL数据库

    在MYSQL中,运行INSERT INTO 插入语句中的字段是否一定要把该表的字段全部填上?

    周小董
  • Python 操作 MySQL数据库

        可以直接从MySQL官方网站下载最新版本。MySQL是跨平台的,选择对应的平台下载安装文件,安装即可。 如果是Windows用户,那么安装过程非常简单,...

    py3study
  • python 操作MySQL数据库

    2.select SELECT ip,env from hosts ORDER BY 1, 2 for row in cur.fetchall(): print...

    py3study
  • Python 操作 MySQL 数据库

    MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

    用户5005176
  • Python - 操作 MySQL 数据库

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb

    小菠萝测试笔记
  • Python操作mysql数据库

    (sql部分的笔记较多难以整理,先简单说明一下如何使用python进行数据库连接,此外由于Java的技术栈过长,接下来的学习将重新回归到python先实现效果,...

    IT大咖说
  • Python操作mysql之模块pymysql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。

    超蛋lhy

扫码关注云+社区

领取腾讯云代金券