• python_MySQL 数据库操作


    Python中的mysql操作可以使用MySQLdb模块来完成。它符合Python社区设计的Python Database API SpecificationV2.0标准,所以与其他的数据库操作的API,如SQLite等基本类似。
    学习可参见:http://www.runoob.com/python3/python3-mysql.html
     
    1.连接的建立与释放
    建立连接时可用connect函数,它返回一个Connection类型对象
     
    conn = MySQLdb.connect('localhost''root''123456''test')
     
    connect方法常用的参数有
     
    host:数据库主机名.默认是用本地主机. 
    user:数据库登陆名.默认是当前用户. 
    passwd:数据库登陆的秘密.默认为空. 
    db:要使用的数据库名.没有默认值. 
    port:MySQL服务使用的TCP端口.默认是3306.
    charset:数据库编码。
     
    如果在数据编码设置正确时,向数据库插入数据出现乱码时,可以设置连接的字符集参数charset
     
    释放连接时可以应用Connection类型对象的close方法。
    conn.close()
     
    2.Cursor对象
    执行SQL语句前要获得一个指定连接的Cursor对象,由Cursor对象执行SQL查询并获取结果。
     
    获得Cursor对象的方法
    cur = conn.cursor()
     
    在默认情况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行查询后每条记录的结果以列表(list)表示。如果要返回字典(dict)表示的记录,就要设置cursorclass参数为MySQLdb.cursors.DictCursor类。
    cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
    这个参数也可在调用connect方法建立连接时设置
    conn  =  MySQLdb.connect(host  =  'localhost',  user  =  'root',  passwd  =  '123456',  db  =  'test'  cursorclass  =  MySQLdb.cursors.DictCursor)
     
    执行结束后可以关闭cursor对象
    cur.close()
     
    3.查询,插入,更新、删除操作。
     
    Cursor类型提供了execute方法用于执行SQL操作
    execute(query [,parameters])
    query是一个SQL字符串,parameters是一个序列或映射,返回值是所影响的记录数
     
    查询
    cur.execute("select * from t1 where name = %s and age = %s", ('June', 27))
    cur.execute("select * from t1 where name = %(name)s and age = %(age)s", {'name':'June''age':27})
    这里和字符串的格式化操作类似,但不管参数是什么类型,都要用'%s'
     
    获取结果
    获取结果集有三种方法,fetchone、fetchall和fetchmany,返回结果是一个tuple对象,tuple中的每一个元素对应查询结果中的一条记录。
    fetchone()返回结果集中的下一条记录
    fetchall()返回结果集中的剩余记录
    fetchmany([size])返回结果集中size条记录
     
    插入、更新、删除
    cur.execute("insert t1(name, age) values(%s, %s)", ('Jack', 32))
    更新和删除的操作与更新、删除类似
     
    除了execute,Cursor类还提供了executemany()方法
    executemany(query [, parametersequence])
    querey是一个查询字符串,parametersequence是一个参数序列。这一序列的每一项都是一个序列或映射对象。但executemany只适合插入、更新或删除操作,而不适用于查询操作。
     
    cur.execute("insert t1(name, age) values(%s, %s)", (('Jack', 32), ('Junior', 24)))
     
    mysql现在一般会默认InnoDB作为默认引擎,InnoDB引擎执行插入、更新、删除操作后要进行提交,才会更新数据库。
    cur.commit()
     
    4.其他操作
    Connection类:
    rollback() 回滚
     
    Cursor类:
    callproc(procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数。
    nextset():移动到下一个结果集
    执行查询操作或存储过程时可能返回多个结果集,例如:
    cur.execute('select * from t1; select * from t2')
  • 相关阅读:
    新版本ADT创建Android项目无法自动生成R文件解决办法
    关联android-support-v4源码关联不上的解决办法
    关于调用notifyDataSetChanged刷新PullToRefreshListView列表无反应解决办法
    如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?
    ProgressBar+WebView实现自定义浏览器
    Android之ProgressBar读取文件进度解析
    Android开发之ListView添加多种布局效果演示
    ubuntu释放snapd旧文件
    rte_kni
    follow RISC-V
  • 原文地址:https://www.cnblogs.com/VseYoung/p/mysql.html
Copyright © 2020-2023  润新知