安装不成功的情况,
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
代码
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:
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
游标对象相当于是光标对象
操作数据表的各种行动。都要通过这个游标对象
游标对象 = 数据库连接对象.cursor( )
游标对象.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("数据插入成功")
结果
》注意
当插入语句执行以后, 一定要让
数据库的连接对象调一下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
查询语句执行后,结果会保留在游标对象中
获取游标对象中的查询结果
获取一条,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
设置后,查询后得到的结果就是字典的类型