Python基础语法13--MySQL数据库操作

 

目录

MySQL数据库

1、操作mysql数据库流程

2、连接数据库函数 pymysql.connect()

3、获取游标 conn.cursor()

4、执行sql语句 execute和executemany

1)创建数据库  cursor.execute(createdb_sql)

2)创建表  cursor.execute(create_table_sql)

3)插入单条数据 cursor.execute(sql,args)

4)批量插入多条数据  cursor.executemany(sql,args)

5、查询数据  cursor.fetchone()、fetchmany、fetchall

1>>  获取游标所在处的一行数据 cursor.fetchone()

2>>  接收size行返回结果行  cursor.fetchmany(size)

3>>  接收全部的返回结果行  cursor.fetchall()

6、更新数据  cursor.execute()

1)更新一条数据  cursor.execute(update_sql)

2)更新多条数据

7、删除数据

1)删除单条数据  cursor.execute(delete_sql, (70, "tom1"))

2)删除多条数据

8、事务回滚  conn.rollback()

9、总结

1)使用try…except结构,避免错误导致的数据不一致

2)conn.commit()提交的使用

3)sql语句格式

10、插入10条数据到数据库

1)每次插入一条

2)一次插入多条


MySQL数据库

  • python3 与MySQL 进行交互编程,需要安装 pymysql 库:pip install --user pymysql

 

1、操作mysql数据库流程

  1. 引用API模块;
  2. 获取与数据库的连接;
  3. 执行sql语句,或存储过程;
  4. 关闭数据库连接。

 

2、连接数据库函数 pymysql.connect()

import pymysql

# 打开数据库连接
conn = pymysql.connect('192.168.171.131', user='root', passwd='root', db='pydb', charset='utf8')
print(conn)
print(type(conn))
print(dir(conn))

 输出结果:

<pymysql.connections.Connection object at 0x000002ABBD4608E0>
<class 'pymysql.connections.Connection'>
['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_affected_rows', '_auth_plugin_map', '_auth_plugin_name', '_binary_prefix', '_closed', '_connect_attrs', '_create_ssl_ctx', '_execute_command', '_force_close', '_get_auth_plugin_handler', '_get_server_information', '_local_infile', '_next_seq_id', '_process_auth', '_quote_bytes', '_read_bytes', '_read_ok_packet', '_read_packet', '_read_query_result', '_read_timeout', '_request_authentication', '_result', '_rfile', '_secure', '_send_autocommit_mode', '_sock', '_write_bytes', '_write_timeout', 'affected_rows', 'autocommit', 'autocommit_mode', 'begin', 'bind_address', 'character_set_name', 'charset', 'client_flag', 'close', 'commit', 'connect', 'connect_timeout', 'cursor', 'cursorclass', 'db', 'decoders', 'encoders', 'encoding', 'escape', 'escape_string', 'get_autocommit', 'get_host_info', 'get_proto_info', 'get_server_info', 'host', 'host_info', 'init_command', 'insert_id', 'kill', 'literal', 'max_allowed_packet', 'next_result', 'open', 'password', 'ping', 'port', 'protocol_version', 'query', 'rollback', 'salt', 'select_db', 'server_capabilities', 'server_charset', 'server_language', 'server_public_key', 'server_status', 'server_thread_id', 'server_version', 'set_charset', 'show_warnings', 'sql_mode', 'ssl', 'thread_id', 'unix_socket', 'use_unicode', 'user', 'write_packet']

 

问题:如果执行报错,“pymysql.err.OperationalError: (1049, "Unknown database 'pydb'")”,可能原因分析:

1)数据库连接写的不对(如,我的数据库是搭建在VM虚机中的,就不能写localhost,或127.0.0.1,要写虚机的ip地址)

2)数据库db不存在(如,使用Navicat for MySQL创建的是新连接,不是新的数据库)

 

3、获取游标 conn.cursor()

  • 数据库连接后,要获取游标,使用游标来操作数据库;
  • 创建游标实例对象:cursor = conn.cursor()
import pymysql

# 打开数据库连接
conn = pymysql.connect('192.168.171.131', user='root', passwd='root', db='pydb', charset='utf8')
# 创建游标对象cursor
cursor = conn.cursor()
print(cursor)
print(type(cursor))
print(dir(cursor))

输出结果:

<pymysql.cursors.Cursor object at 0x0000020F25DA0340>
<class 'pymysql.cursors.Cursor'>
['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_check_executed', '_clear_result', '_conv_row', '_do_execute_many', '_do_get_result', '_ensure_bytes', '_escape_args', '_executed', '_get_db', '_nextset', '_query', '_result', '_rows', 'arraysize', 'callproc', 'close', 'connection', 'description', 'execute', 'executemany', 'fetchall', 'fetchmany', 'fetchone', 'max_stmt_length', 'mogrify', 'nextset', 'rowcount', 'rownumber', 'scroll', 'setinputsizes', 'setoutputsizes']

 

4、执行sql语句 execute和executemany

execute

  • execute(query,args=None)
  • 函数作用:执行单条的sql语句,执行成功后返回受影响的行数
  • 参数说明:
    query要执行的sql语句,字符串类型
    args:可选的序列或映射,用于query的参数值。如果args为序列,query中必须使用%s做占位符;如果args为映射,query中必须使用%(key)s做占位符

 

executemany

  • executemany(query,args=None)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值