python中连接数据库,以及sql语句操作

时间:2024-03-31 18:45:23

1、python连接数据库
conn=pymysql.connect(host=‘cd-cdb-eicvkqfb.sql.tencentcdb.com’,user=‘root’,passwd=‘ceshi123’,port=6960,db=‘athena_dispatch’,charset=‘utf8’)

2、Connection()的参数列表
host,连接的数据库服务器主机名,默认为本地主机(localhost)。
user,连接数据库的用户名,默认为当前用户。
passwd,连接密码,没有默认值。
db,连接的数据库名,没有默认值。
conv,将文字映射到Python类型的字典。
MySQLdb.converters.conversions
cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。
compress,启用协议压缩功能。
named_pipe,在windows中,与一个命名管道相连接。
init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。
read_default_file,使用指定的MySQL配置文件。
read_default_group,读取的默认组。
unix_socket,在unix中,连接使用的套接字,默认使用TCP。
port,指定数据库服务器的连接端口,默认是3306。
连接对象的db.close()方法可关闭数据库连接,并释放相关资源。
连接对象的db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库中的数据。
连接对象的db.begin()方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束。
连接对象的db.commit()和db.rollback()方法分别表示事务提交和回退。
指针对象的cursor.close()方法关闭指针并释放相关资源。
指针对象的cursor.execute(query[,parameters])方法执行数据库查询。
指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
指针对象的cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多行,我们可利用可选的参数指定取出的行数。
指针对象的cursor.fetchone()从查询结果集中返回下一行。
指针对象的cursor.arraysize属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1。
指针对象的cursor.rowcount属性指出上次查询或更新所发生行数。-1表示还没开始查询或没有查询到数据。
python中连接数据库,以及sql语句操作

3、cursor的用法
常用方法:
close():关闭此游标对象
fetchone():得到结果集的下一行
fetchmany([size = cursor.arraysize]):得到结果集的下几行
fetchall():得到结果集中剩下的所有行
excute(sql[, args]):执行一个数据库查询或命令
excutemany(sql, args):执行多个数据库查询或命令

3、示例
#coding=utf-8
import pymysql

#创建sql连接
conn=pymysql.connect(host=‘cd-cdb-eicvkqfb.sql.tencentcdb.com’,user=‘root’,passwd=‘qwerDF123’,port=63960,db=‘athena_dispatch’,charset=‘utf8’)
print(conn)
#使用 cursor() 方法创建游标,用于执行sql语句并获得结果
cursor = conn.cursor()
#查询订单ID
select_sql=“select order_id from athena_dispatch.athena_order ORDER BY order_id DESC”
print(select_sql)
cursor.execute(select_sql)
#获取单条
one_data=str(cursor.fetchone())
print(one_data)
print(“第一条订单数据获取完毕”)
order_id=one_data.split(",")[0].split("(")[1]
print("order_id is "+order_id)

#使用 execute() 方法执行 SQL 查询
update_sql=“UPDATE athena_vehicle.athena_send_car_info SET create_time = ‘2019-12-17 08:00:00’ WHERE order_id = %s”%(order_id)
print(update_sql)
try:
cursor.execute(update_sql)
print(“sql执行完毕”)
conn.commit()
print(“sql提交完毕”)
except:
conn.rollback()

#关闭连接
conn.close()