python -pymysql的操作

安装

python -pymysql的操作_第1张图片

安装不成功的情况,

linux
Linux中Python3.6.6使用pip3安装第三方库报错pip is configured with locations that require TLS/SSL_综合技术_张晨的个人博客
http://www.zhangc.cn/?id=94

windows

C:\Users\56989\Anaconda3\Scripts
C:\Users\56989\Anaconda3\Library\bin
C:\Users\56989\Anaconda3

导入模块,生成对象

查看源码,了解传参情况
python -pymysql的操作_第2张图片

查看连接对象的属性情况

代码

import pymysql

# 获取连接对象 Connection类的对象
conn = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    passwd="root",
    db="python05"
)

print(conn)
print("===",conn.host)
for k,v in conn.__dict__.items():   # 字典.items()
    print("{}--{}".format(k,v))


结果

C:\Users\python_hui\Anaconda3\python.exe G:/1907易学习知识系统/数据库练习/main.py

=== 127.0.0.1
_local_infile–False
ssl–False
host–127.0.0.1
port–3306
user–b’root’
password–b’root’
db–b’python05’
unix_socket–None
bind_address–None
connect_timeout–10
_read_timeout–None
_write_timeout–None
charset–utf8mb4
use_unicode–True
encoding–utf8
client_flag–3842573
cursorclass–
_result–None
_affected_rows–0
host_info–socket 127.0.0.1:3306
autocommit_mode–False
encoders–{: , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : , : }
decoders–{16: , 1: , 2: , 3: , 4: , 5: , 8: , 9: , 13: , 7: , 12: , 11: , 10: , 248: , 252: , 249: , 250: , 251: , 254: , 253: , 15: , 0: , 246: }
sql_mode–None
init_command–None
max_allowed_packet–16777216
_auth_plugin_map–{}
_binary_prefix–False
server_public_key–None
_connect_attrs–{’_client_name’: ‘pymysql’, ‘_pid’: ‘7400’, ‘_client_version’: ‘0.9.3’}
_closed–False
_sock–
_rfile–<_io.BufferedReader name=484>
_next_seq_id–2
protocol_version–10
server_version–8.0.16
server_thread_id–(26,)
salt–b’3Rxl+\x01n\x0f\x0ec\x07R8\x0e4X *D1’
server_capabilities–3288334335
server_language–255
server_charset–utf8mb4
server_status–0
_auth_plugin_name–caching_sha2_password

Process finished with exit code 0

获取游标对象

游标对象相当于是光标对象

操作数据表的各种行动。都要通过这个游标对象

python -pymysql的操作_第3张图片
可色儿

游标对象 = 数据库连接对象.cursor( )

写sql语句

游标对象.execute(strSQL语句)

例子

cur = conn.cursor()

sql = "insert into stu values (0, '五狗子', 3)"
# sql = "insert into stu values (0, '{}', 3)".format(name)

cur.execute(sql)
conn.commit()
print("数据插入成功")

结果

在mysql对应的表中,成功可以查到插入的数据
python -pymysql的操作_第4张图片

》注意

当插入语句执行以后, 一定要让

数据库的连接对象调一下commit()方法, 提交我们的修改操作

否则,数据是查入不成功的

关闭对象

游标对象关闭

cursor.close()

连接对象关闭

conn.close()

当前阶段的完整代码

import pymysql

# 获取连接对象 Connection类的对象
# 连接对象 = 模块名.函数名(参数)
conn = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    passwd="root",
    db="python05"
)

# 获取游标对象
cur = conn.cursor()

# sql语句
sql = "insert into stu values (0, '八狗子', 3)"
# sql = "insert into stu values (0, '{}', 3)".format(name)

res = cur.execute(sql)
print("游标对象的execute返回结果", res)
conn.commit()

print("数据插入成功")


注意,需要改一改数据库的相关设置

查询数据

res = 游标对象.execute(SQL查询语句)

res是获取的数据条件,例如获取了8条数据,res就是8

查询语句执行后,结果会保留在游标对象中

获取游标对象中的查询结果

python -pymysql的操作_第5张图片

获取一条,fetchone()

获取所有,fetchall()

获取多条,fetchmany(条数)

光标在结果中移动

光标的相对移动

如果位移数值为负值,向上移动,为正值,向下移动。 相对于当前的光标位置的。

光标对象.scroll(位移数值, mode="relative")

光标的绝对移动

查询的结果按照索引0开始计数

光标对象.scroll(位移索引值, mode="absolute")

改变输出的结果

默认的查询结果是元组

例如,(3, ‘二狗子’, 3)

但是我们如果不查数据表, 是不明确这些数据的意义的

理想的数据是有意义标记的数据,就是字典

例如, {‘id’: 3, ‘name’: ‘二狗子’, ‘tid’: 3}

解决办法, 定义游标对象的时候,传递参数,明确游标的类型

cur = conn.cursor(cursor=pymysql.cursors.DictCursor)

意思是说,连接对象conn它的cursor函数的返回值是字典类型的游标对象DictCursor

设置后,查询后得到的结果就是字典的类型

你可能感兴趣的:(python -pymysql的操作)