11-python-SQL基础

文章目录

  • 1.连接数据库
  • 2.现有数据
  • 3.执行查询操作
  • 4.插入操作
  • [练习1]
  • [练习2]

1.连接数据库

from pymysql import Connection
conn=Connection(  # 获取连接对象
    host="localhost",  # 主机名
    port=3306,  # 端口
    user="root",  # 用户名
    password="123456"  # 密码
)
print(conn.get_server_info())  # 打印数据库版本号
conn.close()  # 关闭数据库连接

2.现有数据

11-python-SQL基础_第1张图片11-python-SQL基础_第2张图片

3.执行查询操作

x=conn.cursor() # 获取游标对象
conn.select_db("test410") # 选择数据库
x.execute("select * from ts;") # 执行sql语句,可不加分号
fanhui=x.fetchall()  # 通过fetchall()获取查询结果,存入fanhui,存入类型为元祖
for r in fanhui: # 遍历输出
    print(r)
conn.close()
"""例如输出为:
(1, 'jack', 18)
(2, 'peter', 19)
"""

11-python-SQL基础_第3张图片

4.插入操作

(1)手动commit

x=conn.cursor() # 获取游标对象
conn.select_db("test410") # 选择数据库
x.execute("insert into ts values(3,'xiaoming',20)") # 执行sql语句
conn.commit() # 确认提交
conn.close()

11-python-SQL基础_第4张图片
(2)自动commit

from pymysql import Connection
conn=Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True # 自动确认打开
)

x=conn.cursor()
conn.select_db("test410")
x.execute("insert into ts values(4,'ming',21)")

conn.close()

11-python-SQL基础_第5张图片

[练习1]

将"10-python面向对象"综合练习中的数据插入数据库

11-python-SQL基础_第6张图片
数据库名:py_sql
表名:orders

11-python-SQL基础_第7张图片
[解]
main.py改为

from pymysql import Connection
from file_define import File1,File2

file1=File1("D:/面向对象资料1/2011年1月销售数据.txt")
file2=File2("D:/面向对象资料1/2011年2月销售数据JSON.txt")

ffile1=file1.read_data() # 调用方法,进行处理
ffile2=file2.read_data() # 调用方法,进行处理
all_data=ffile1+ffile2  # 所有数据组成的列表

conn=Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)

c=conn.cursor()
conn.select_db("py_sql")
for x in all_data:
    sql=f"insert into orders values('{x.date}','{x.ID}',{x.price},'{x.province}')"
    c.execute(sql)
conn.close()

完成

11-python-SQL基础_第8张图片

[练习2]

从数据库中获取到以上数据,将其转为json,并存入txt文件中

[解]

from pymysql import Connection
import json
conn=Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)
c=conn.cursor()
conn.select_db("py_sql")
c.execute("select * from orders")
fanhui=c.fetchall()
conn.close()

lis=[]
for r in fanhui:
    dic={}
    dic["order_date"]=str(r[0])
    dic["order_id"]=r[1]
    dic["price"]=r[2]
    dic["povince"]=r[3]
    lis.append(dic) # 由字典组成的列表,便于下面转json
"""
当前lis样式如:
[{'order_date': '2011-01-01', 'order_id': '4b34218c-9f37-4e66-b33e-327ecd5fb897', 'price': 1689, 'povince': '湖南省'}, {'order_date': '2011-01-01', 'order_id': '5b6a6417-9a16-4243-9704-255719074bff', 'price': 2353, 'povince': '河北省'},...]
"""

f=open("D:/new_file_mysql.txt","w",encoding="UTF-8")
for j in range(len(lis)):
        s=json.dumps(lis[j],ensure_ascii=False)
        f.write(s)
        f.write("\n")
f.close()

结果

11-python-SQL基础_第9张图片

你可能感兴趣的:(python教程,sql,python,数据库,数据分析,开发语言)