微企点网站建设,app界面设计模板一套,石家庄市网站建设,模板手机网站建设多少钱原创#xff1a; 阿亮 Python极客社区操作MySQL#xff0c;我们都习惯于用pymsq#xff0c;基本流程就是创建连接创建游标执行SQL关闭连接代码是这样的import pymysql# 1.创建连接conn pymysql.connect(host127.0.0.1, port3306, userroot, passwordroot, charsetutf8)# 2.…原创 阿亮 Python极客社区操作MySQL我们都习惯于用pymsq基本流程就是创建连接创建游标执行SQL关闭连接代码是这样的import pymysql# 1.创建连接conn pymysql.connect(host127.0.0.1, port3306, userroot, passwordroot, charsetutf8)# 2.创建游标cursor conn.cursor()# 3.执行sql语句cursor.execute(select * from user where xxx)resultcursor.execute(sql) #执行sql语句返回sql查询成功的记录数目# 关闭连接游标和连接都要关闭cursor.close()conn.close()而今天要说的库可以快速的进行查询比pymysql好使不再需要操作游标。即records库网上关于这个库的资料其实并不多。 什么你没听过所以不敢用那你总知道requests库吧其实这两个库都是同一个作者写的。这个库不光支持MySQL同样还只是PostgreSQLSQLiteOracle等..项目地址https://github.com/kennethreitz/records安装 pip install records mysqlclient创建一个user_demo表import records# 获取数据库连接db records.Database(mysqlpymysql://root:rootlocalhost:3306/records_test)# 创建表的sqlcreate_sql CREATE TABLE IF NOT EXISTS user_demo ( id int(11) PRIMARY KEY AUTO_INCREMENT, name varchar(20), age int);# 执行db.query(create_sql)获取数据库连接的格式是标准的url格式具体看下图插入数据对于records插入单条和多条数据都比较方便而且还支持动态加载数据。# 获取数据库连接db records.Database(mysqlpymysql://root:rootlocalhost:3306/records_test)# 插入一条数据db.query(INSERT INTO user_demo(name, age) VALUE (tom, 19))# 通过参数传值动态插入一条user {name: liming, age: 20}db.query(INSERT INTO user_demo(name, age) VALUE (:name, :age), **user)# 插入多条users [ {name: 二狗子, age: 14}, {name: 二柱子, age: 12}, {name: 翠花, age: 9}]# records的bulk_query方法支持插入和更新多条数据db.bulk_query (INSERT INTO user_demo(name, age) VALUES (:name, :age), users)执行之后再查询数据库发现都正常插入了mysql select * from user_demo;------------------| id | name | age |------------------| 1 | tom | 19 || 2 | liming | 20 || 3 | 二狗子 | 14 || 4 | 二柱子 | 12 || 5 | 翠花 | 9 |------------------5 rows in set (0.00 sec)查询数据records默认是返回封装的RecordCollection对象当然我们也可以通过调整某些参数获取到不一样的数据类型。as_dict True通过字典的形式返回数据as_ordereddictTrue以排序字典的形式返回数据代码示例rows db.query(select * from user_demo)# 获取全部数据print(rows.all())# 获取第一条数据print(rows.first()) # # 以字典的形式获取数据print(rows.all(as_dictTrue))print(rows.first(as_dictTrue))# 排序字典print(rows.first(as_ordereddictTrue)) # OrderedDict([(id, 1), (name, tom), (age, 19)])事务数据库事务是构成单一逻辑工作单元的操作合集生活中最好的例子就是转账操作A给B转账100元先从A的账户扣除100再给B的账户加100。如果再给B账户加100的过程程序出现异常就会导致A莫名其妙的被扣了100。事务就是用来解决这种问题的保证一个执行单元要么都执行成功要么就都不成功。records同样也支持事务。代码如下with db.transaction() as t: user1 {name: 狗蛋, age: 8} user2 {id: 1, name: 锤子, age: 10} t.query(INSERT INTO user_demo(name, age) VALUE (:name, :age), **user1) print(user1 已执行插入...) t.query(INSERT INTO user_demo(id,name, age) VALUE (:id:name, :age), **user2) print(user2 已执行插入...)数据存中已经存在了id为1的信息因此执行user2的时候会导致主键冲突。 控制台输出user1 已执行插入...并没有输出‘user2 已执行插入...’ 说明执行插入user2的时候出现了主键冲突(数据库中已经存在id为1的数据了)。再去查看数据库发现并没有name为狗蛋的数据说明这是一个数据库事务的过程。在执行user2失败的时候将已经执行成功的user1,进行了事务回滚。数据导出有时候我们需要将数据库的数据进行导出比如存成文本或者Excel。强大的records可以直接进行导出操作。导出csv文件rows db.query(select * from user_demo)with open(user_demo.csv, wb) as f: f.write(rows.export(xlsl))同样可以导出yaml、json、xlsl、pandas、html等格式。导出方法为rows.export(你要导出的格式)例如导出Html格式rows db.query(select * from user_demo)with open(user_demo.html, wb) as f: f.write(rows.export(html).encode(utf-8))最后我自己是一名从事了多年开发的Python老程序员辞职目前在做自己的Python私人定制课程今年年初我花了一个月整理了一份最适合2019年学习的Python学习干货可以送给每一位喜欢Python的小伙伴想要获取的可以关注我的头条号并在后台私信我01即可免费获取。