# 做一个创建表
# 插入数据
from pymysql import *
# 这个类就一个作用,字段
class Fileld(object):
def __init__(self, file_type):
self.file_type = file_type
class CreateClass(type):
def __new__(cls, class_name, supers_name, attrs):
print(attrs)
# 判断当前的值如果是元组就是我们要的值,组成一个新的字典
create_params = dict()
# 从原先的字典中取出来
# for key, value in attrs.items():
# # 判断是元组
# if isinstance(value, tuple):
# # 我们要的数据添加进去
# create_params[key] = value[0] # 取到真实
for key, value in attrs.items():
# 判断是元组
if isinstance(value, Fileld):
# 我们要的数据添加进去
create_params[key] = value.file_type # 取到真实的数据
# 在原先的字典中添加我们的新字典
attrs['create_params'] = create_params
# 拿到类名
attrs['table_name'] = class_name.lower() # 全部小写
print(create_params)
return type.__new__(cls, class_name, supers_name, attrs)
class CreateTable(object, metaclass=CreateClass): # 表名跟类名一致
# uid = Field("int unsigned",) #元组
# name = ("varchar(30)",)
# email = ("varchar(30)",)
# # class_name = ("varchar(30)",)
# password = ("varchar(30)",)
# create_table = {"uid":uid,"name":name,"email":email,"password":password}
# 让系统自动生成
"""创建数据库表"""
# 1. 连接数据
# 创建Connection连接
conn = connect(host='localhost', port=3306, database='stock_db', user='root', password='mysql', charset='utf8')
# 获得Cursor对象
cs1 = conn.cursor()
# 2. 执行sql语句
# 里面所有的字段使用字典生成
# create_dict = {"uid":"int unsigned","name":"varchar(30)","email":"varchar(30)","password":"varchar(30)","class_name":"varchar(30)"}
# 循环去得到字符串
# 存到列表中
fields = list()
for key, value in self.create_params.items(): # 这个字典是我们类创建时自动添加的
fields.append("%s %s" % (key, value)) # 把每个字段写到列表中
print(fields)
# create_sql = """CREATE TABLE IF NOT EXISTS user(uid int unsigned,name varchar(30),email varchar(30),password varchar(30)); """
create_sql = """CREATE TABLE IF NOT EXISTS %s(%s); """ % (self.table_name, ",".join(fields)) # ".".join这个字符串拼接
print(create_sql)
cs1.execute(create_sql);
# 提交
conn.commit()
# 3. 关闭
cs1.close()
conn.close()
def insert(self, **kwargs):
"""这个插入数据"""
# 1. 连接数据
# 创建Connection连接
conn = connect(host='localhost', port=3306, database='stock_db', user='root', password='mysql', charset='utf8')
# 获得Cursor对象
cs1 = conn.cursor()
# 通过字典生成我们的字段
# insert_dict = {"uid":123,"name":"oldyang","email":"test@orm.org","password":"pwdpwd"}
# 定义两个列表
key_list = list()
value_list = list()
print(kwargs)
for key, value in kwargs.items():
# 添加到新的列表
key_list.append(key)
# 判断如果是int那么转成字符串
if isinstance(value, int):
value_list.append(str(value))
else:
value_list.append(""" '%s' """ % value) # 字符串中显示单引号
# value_list.append(str(value))
# 2. 执行sql语句
# insert_sql = """ insert into user (uid,name,email,password) values (123,'oldyang','test@orm.org','pwd');"""
insert_sql = """ insert into %s (%s) values (%s);""" % (
self.table_name, ",".join(key_list), ",".join(value_list))
print(insert_sql)
cs1.execute(insert_sql);
# 提交
conn.commit()
# 3. 关闭
cs1.close()
conn.close()
##########################################################
# 使用Orm
class User(CreateTable):
uid = Fileld("int unsigned")
name = Fileld("varchar(30)")
email = Fileld("varchar(30)")
password = Fileld("varchar(30)")
class Login(CreateTable):
name = Fileld("varchar(30)")
pwd = Fileld("int unsigned")
def main():
"""主入口"""
user = User()
user.create()
user.insert(name = "python7")
login = Login()
login.create()
login.insert(name = "sy")
if __name__ == '__main__':
main()
# 插入数据
from pymysql import *
# 这个类就一个作用,字段
class Fileld(object):
def __init__(self, file_type):
self.file_type = file_type
class CreateClass(type):
def __new__(cls, class_name, supers_name, attrs):
print(attrs)
# 判断当前的值如果是元组就是我们要的值,组成一个新的字典
create_params = dict()
# 从原先的字典中取出来
# for key, value in attrs.items():
# # 判断是元组
# if isinstance(value, tuple):
# # 我们要的数据添加进去
# create_params[key] = value[0] # 取到真实
for key, value in attrs.items():
# 判断是元组
if isinstance(value, Fileld):
# 我们要的数据添加进去
create_params[key] = value.file_type # 取到真实的数据
# 在原先的字典中添加我们的新字典
attrs['create_params'] = create_params
# 拿到类名
attrs['table_name'] = class_name.lower() # 全部小写
print(create_params)
return type.__new__(cls, class_name, supers_name, attrs)
class CreateTable(object, metaclass=CreateClass): # 表名跟类名一致
# uid = Field("int unsigned",) #元组
# name = ("varchar(30)",)
# email = ("varchar(30)",)
# # class_name = ("varchar(30)",)
# password = ("varchar(30)",)
# create_table = {"uid":uid,"name":name,"email":email,"password":password}
# 让系统自动生成
"""创建数据库表"""
# 1. 连接数据
# 创建Connection连接
conn = connect(host='localhost', port=3306, database='stock_db', user='root', password='mysql', charset='utf8')
# 获得Cursor对象
cs1 = conn.cursor()
# 2. 执行sql语句
# 里面所有的字段使用字典生成
# create_dict = {"uid":"int unsigned","name":"varchar(30)","email":"varchar(30)","password":"varchar(30)","class_name":"varchar(30)"}
# 循环去得到字符串
# 存到列表中
fields = list()
for key, value in self.create_params.items(): # 这个字典是我们类创建时自动添加的
fields.append("%s %s" % (key, value)) # 把每个字段写到列表中
print(fields)
# create_sql = """CREATE TABLE IF NOT EXISTS user(uid int unsigned,name varchar(30),email varchar(30),password varchar(30)); """
create_sql = """CREATE TABLE IF NOT EXISTS %s(%s); """ % (self.table_name, ",".join(fields)) # ".".join这个字符串拼接
print(create_sql)
cs1.execute(create_sql);
# 提交
conn.commit()
# 3. 关闭
cs1.close()
conn.close()
def insert(self, **kwargs):
"""这个插入数据"""
# 1. 连接数据
# 创建Connection连接
conn = connect(host='localhost', port=3306, database='stock_db', user='root', password='mysql', charset='utf8')
# 获得Cursor对象
cs1 = conn.cursor()
# 通过字典生成我们的字段
# insert_dict = {"uid":123,"name":"oldyang","email":"test@orm.org","password":"pwdpwd"}
# 定义两个列表
key_list = list()
value_list = list()
print(kwargs)
for key, value in kwargs.items():
# 添加到新的列表
key_list.append(key)
# 判断如果是int那么转成字符串
if isinstance(value, int):
value_list.append(str(value))
else:
value_list.append(""" '%s' """ % value) # 字符串中显示单引号
# value_list.append(str(value))
# 2. 执行sql语句
# insert_sql = """ insert into user (uid,name,email,password) values (123,'oldyang','test@orm.org','pwd');"""
insert_sql = """ insert into %s (%s) values (%s);""" % (
self.table_name, ",".join(key_list), ",".join(value_list))
print(insert_sql)
cs1.execute(insert_sql);
# 提交
conn.commit()
# 3. 关闭
cs1.close()
conn.close()
##########################################################
# 使用Orm
class User(CreateTable):
uid = Fileld("int unsigned")
name = Fileld("varchar(30)")
email = Fileld("varchar(30)")
password = Fileld("varchar(30)")
class Login(CreateTable):
name = Fileld("varchar(30)")
pwd = Fileld("int unsigned")
def main():
"""主入口"""
user = User()
user.create()
user.insert(name = "python7")
login = Login()
login.create()
login.insert(name = "sy")
if __name__ == '__main__':
main()