多对多操作还有链表查询
python操作MySQL:
Python操作MySQL主要使用两种方式:
原生模块 pymsql
ORM框架SQLAchemy
pymsql是python中操作MySQL的模块,其使用方法和MySQLLdb几乎相同。
用:pip3 install mysql
注意这个安装完以后就可以用python操作MYSQL.
然后就可以创建python文件,并且操作MySQL了。
import pymysql
注意要想用数据库,必须得先连接上。连接上的时候指定ip地址和端口号,用户名,密码以及数据库。
conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='',db='db2')
注意连接是创建通道。
cursor=conn.cursor()
游标是帮我们存取数据库。
拿数据取数据得用手,游标就起到那个手的作用。
接下来就是执行sql语句,并返回受影响的行数。
effect_row=cursor.execute("update user set name='sunlieqi' ")
然而上述还没有提交到数据库,只有commit的时候才算的上是提交到数据库了。
就是利用conn.commit(),注意只有写了这句,才算是已经提交了。然后之后就要关闭游标、关闭连接。也就是:
cursor.close()
conn.close()
注意一定得是先关闭游标,再关闭连接。
注意python是可以做用户注册的。
注意execute里面有两个参数,第一个参数是SQL语句,第二个参数是占位符。所以在写执行sql语句的时候,可以这样写:
conn.execute("insert into user(username,password) values(%s,%s)",('eric','888'))
则还可以这样执行:
u=input('>>>')
p=input('>>>')
则要执行的sql语句可以写成:
effect_row=conn.execute("insert into user(username,password) values(%s,%s)",(u,p))
这样的话可以一条一条的插入语句。
注意也可以批量插入数据。此时就可以用executemany
effect_row=conn.executemany("insert into user(username,password) values(%s,%s)",[("1.1.1.11",1),("1.1.1.11",2)])
注意:execute可以做的就是可以增加删除更新数据
注意修改的时候可以执行commit()
查找的时候就不用执行commit了。
如果是查询的话,就直接用以下语句:
effect_row=cursor.execute("select * from user")
注意取到的数据全部都取到了游标里面。
此时用一句:
result=cursor.fetchall()就可以获取到所有的数据。
print(result)
然而这里获取的数据不太好,因为都是元祖。每一列并不知道列名。
注意只要在创建游标的时候在参数里边给他指出最后显示的形式是以字典的方式进行显示的,就会没有问题。
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
effect_row=cursor.execute("select * from user where nid>%s order by nid desc",(5,))
只要这么一改,所有取到的数据就全是字典。
注意除了有cursor。fetchall()这条语句,还有cursor.fetchone()
注意可以一直执行fetchone()
这个一直到fetchone拿到的数据没有的时候就会没有了。
cursor.fetchmany(3)
可以利用cursor.scroll()去上下移动指针。
cursor.scroll(-1,mode='relative')注意relative就是以当前位置去移动指针。
注意移动如果是正值的话就往下移动。如果是负值的话就往上边移动。
除了有相对移动,还有绝对移动,绝对移动就是鼠标定在哪里,就在哪里进行移动。如下所示:
cursor.scroll(0,mode="absolute")就是鼠标定在0,就在0这里进行移动。
注意光执行SQL语句是不能成功的,必须得再次加上:
conn.commit()
如果插入成功的话,实际上是可以帮你拿到那个自增的id

浙公网安备 33010602011771号