加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python数据库连接--mysql(pymysql)

发布时间:2020-12-20 10:51:14 所属栏目:Python 来源:网络整理
导读:--------安装 ?pip install pymysql ? -------主要方法 connect(): commit():事务提交,如果没有设为自动提交,则每次操作后必须提交事务,否则操作无效 rollback():操作出错时,可以用这个函数回滚到执行事务之前 --------------.简单示例:连接数据库

--------安装

?pip install pymysql

?

-------主要方法

connect():
commit():事务提交,如果没有设为自动提交,则每次操作后必须提交事务,否则操作无效
rollback():操作出错时,可以用这个函数回滚到执行事务之前

--------------.简单示例:连接数据库

1.数据库中查询出的数据

SELECT book_id,book_name FROM t_book WHERE market_rule=1

?

?

2.连接数据库

import  pymysql
import types

#连接数据库
connect=pymysql.connect(host="192.168.6.41",user="lrtsaudio",password="2&Ty3DW75i!(vgo.l3Odp1fgWgEG",port=3306,db="audiobook")
#使用cursor()方法创建一个游标对象
cursor=connect.cursor()
#使用游标的execute()方法执行sql语句
cursor.execute("SELECT book_id,book_name FROM t_book WHERE market_rule=1")
#使用fetchall()获取全部数据
r1=cursor.fetchall()
print(r1)
print(type(r1))
#关闭游标连接
cursor.close()
#关闭数据库连接
connect.close()

结果如下:(返回结果为元组)

?

?

也可以通过字典来传递参数:效果是一样的

dbinfo={"host":"192.168.6.41","user":"lrtsaudio","password":"2&Ty3DW75i!(vgo.l3Odp1fgWgEG","db":"audiobook"
}

sql="SELECT * FROM t_book WHERE market_rule=1"
connect1=pymysql.connect(**dbinfo)
cursor1=connect1.cursor()
cursor1.execute(sql)
r2=cursor1.fetchall()
print(r2)
cursor1.close()
connect1.close

?

?-------connect()各个参数代表的意思

    host=None,# 要连接的主机地址
    user=None,# 用于登录的数据库用户
    password=‘‘,# 密码
    database=None,# 要连接的数据库
    port=0,# 端口,一般为 3306
    unix_socket=None,# 选择是否要用unix_socket而不是TCP/IP
    charset=‘‘,# 字符编码
    sql_mode=None,# Default SQL_MODE to use.
    read_default_file=None,# 从默认配置文件(my.ini或my.cnf)中读取参数
    conv=None,# 转换字典
    use_unicode=None,# 是否使用 unicode 编码
    client_flag=0,# Custom flags to send to MySQL. Find potential values in constants.CLIENT.
    cursorclass=<class pymysql.cursors.Cursor>,# 选择 Cursor 类型
    init_command=None,# 连接建立时运行的初始语句 
    connect_timeout=10,# 连接超时时间,(default: 10,min: 1,max: 31536000)
    ssl=None,# A dict of arguments similar to mysql_ssl_set()‘s parameters.For now the capath and cipher arguments are not supported. 
    read_default_group=None,# Group to read from in the configuration file.
    compress=None,# 不支持
    named_pipe=None,# 不支持
    no_delay=None,# 
    autocommit=False,# 是否自动提交事务
    db=None,# 同 database,为了兼容 MySQLdb
    passwd=None,# 同 password,为了兼容 MySQLdb
    local_infile=False,# 是否允许载入本地文件
    max_allowed_packet=16777216,# 限制 `LOCAL DATA INFILE` 大小
    defer_connect=False,# Don‘t explicitly connect on contruction - wait for connect call.
    auth_plugin_map={},#
    read_timeout=None,# 
    write_timeout=None,bind_address=None   # 当客户有多个网络接口,指定一个连接到主机

?

?

------查询数据

import  pymysql

dbinfo={"host":"192.168.6.41","db":"audiobook"
}

sql1="SELECT book_id,book_name FROM t_book WHERE market_rule=1"
sql2="SELECT * FROM audiobook.w_activity_ticket_3 WHERE user_id=234739503"
connect1=pymysql.connect(**dbinfo)
cursor1=connect1.cursor()
cursor1.execute(sql1)  #返回值未为受影响的行数,如下:
"""
num=cursor1.execute(sql1)
print(num)  #结果:num=8
"""
r_all=cursor1.fetchall()#取出全部查询结果
r_one=cursor1.fetchone()#取出一行查询结果。从第一行开始取
r_many=cursor1.fetchmany(size=2)#取出其中几行查询结果
print(r_all)
print(r_one)
print(r_many)

cursor1.close()
connect1.close()

注释掉fetchall的代码后结果:

!!!也就是说:

如fetchall(),fetchmany(),fetchone()同时作用于同一个查询时,每个方法执行开头是上一个方法执行的结尾

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读