参考链接:http://www.woodpecker.org.cn/diveintopython/functional_programming/dynamic_import.html
一 动态导入模块
Python的import不能接受变量,所以应该用 __import__函数来动态导入。
如下的代码无法正常导入模块
modules = ['OpenSSL', 'Crypto', 'MySQLdb', 'sqlite3', 'zope.interface', 'pyasn1', 'twisted', 'django']
for each in modules:
try:
import each
except Exception, e:
print e
这样导入会抛出 No module named each
的异常
将 import each 改为 __import__(each)就可以正常导入了。
二 检查模块是否安装
使用__import__函数也可以用来检查模块是否已安装,略微修改上面的代码即可。
使用imp.find_module()来检查不方面,如find_module('zope.interface')会抛出异常——因为这个函数无法查找子模块。
模块加载后,就可以在sys.module这个字典里找到加载的模块名了。 ......
# coding=gb2312
# 用中文注释前务必加上第一行
# 求模运算符,和C语言一样
print 10%9
# 整数相除仍然是整数
print 5/2
# 2后加上.就变成浮点数了
print 5/2.
# **表示求幂运算
print 7**4
# 函数用时要加上module.function
import math
print math.floor(19.8)
# 函数名也可以成为变量
func = math.floor
print func(1.9)
# 可以用 + 来连接两个字符串
print "abc" + "def"
# 如果句子中有 ’,可以用\'代替
print 'He\'s a student'
# 或者用双引号
print "He's a teacher"
# 字符串可以索引
print "abcdefgf"[3]
# 将数字变成字符串的三种方法
x = 12345
print 'number:' + str(x)
print 'number:' + repr(x)
print 'number:' + `x`
# 输入数字的方法
x = input('Please Enter a number:')
print x
# 输入字符串的方法
xx = raw_input();
#print xx
# 程序结尾可以加上这一行,程序就不会一闪而过了
raw_input('Press Enter to Continue...') ......
1、添加ADODC到窗体
2、ACESS数据库中至少有一张表存在。
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
"C:\Documents and Settings\Administrator\" & _
"My Documents\11.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdUnknown
Adodc1.RecordSource = "select top 1 * from tb11"
Adodc1.Refresh
With Adodc1.Recordset.ActiveConnection
.Execute = "CREATE TABLE [NT_channel_product3]([Id] counter CONSTRAINT id PRIMARY KEY," & _
"[ChID] long NOT NULL ,title text(100) NOT NULL ,[ClassID] long NOT NULL ," & _
"[SpecialID] text (200) NULL ,[TitleColor] text (10) NULL ," & _
"[TitleITF] byte NULL ,[TitleBTF] byte NULL ,[PicURL] text (200) NULL ," & _
"[Content] memo NULL ,[NaviContent] text (200) NULL ," & _
"[ContentProperty] ......
1、添加ADODC1到窗体
2、准备好一个ACCESS新建的空数据库66.mdb
Private Sub Form_Load()
With Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
"C:\Documents and Settings\Administrator\" & _
"My Documents\66.mdb;Persist Security Info=False"
.RecordSource = "select top 1 id from MSysAccessObjects"
.Refresh
With .Recordset.ActiveConnection
.Execute = "CREATE TABLE [iTB1]([Id] counter CONSTRAINT id PRIMARY KEY," & _
"[ChID] long NOT NULL ,title text(100) NOT NULL ," & _
"[ClassID] long NOT NULL ,[SpecialID] text (200) NULL ," & _
"[TitleColor] text (10) NULL ,[TitleITF] byte NULL ," & _
"[TitleBTF] byte NULL ,[PicURL] text (200) NULL)"
End With
End With
End Sub ......
SQLite用触发器来替代外键约束 CREATE TABLE [Category] (
[Pkid] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[CategoryName] NVARCHAR(32) NOT NULL,
[CategoryGuid] char(36) UNIQUE NOT NULL,
[CategoryDesc] nvarchar(256) NULL
) CREATE TABLE [Product] (
[Pkid] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[CategoryPkid] INTEGER NOT NULL,
[ProductName] nvarchar(32) NULL,
[ProductPrice] NUMERIC(19,4) DEFAULT '0.00' NOT NULL
) --Insert约束
CREATE TRIGGER FK_Product_CategoryPkid_Insert
BEFORE Insert ON Product
FOR EACH ROW BEGIN
SELECT RAISE(ROLLBACK,'No this categoryPkid in category')
WHERE (SELECT Pkid from Category WHERE Pkid = NEW.CategoryPkid) IS NULL;
END --Update约束
CREATE TRIGGER FK_Product_CategoryPkid_Update
BEFORE Update ON Product
FOR EACH ROW BEGIN
SELECT RAISE(R ......
我老婆工作要管理好多的excel表格比较的麻烦,于是想着帮忙写个软件让她方便点
其实我winform软件还没有写过呢,以前写的都是web的
因为写的软件就是她自己用用我想应该不需要用什么大的数据库的,所以我最先想到用access数据库挺方便的文件复制就可以了
可是我没有office access啊,不过我记得电脑上好像有access数据库文件的,所有找到这个文件开始删除表格,建需要的表格
想着方便点就写过可以执行sql的窗口,重来没有写过还是有点麻烦的,写了个操作数据库的类,写完这些我已经花了我两个小时时,我还想想需要建立的表格什么的。就休息了
休息时我突然想到有个开源的sqlite数据库,为什么不用这个数据库呢,用那access干嘛啊,还麻烦呢
第二天我下载了一个sqlite的,刚下载了在。net下不能用,后来发现还有个。net版的
下载地址如下 http://sqlite.phxsoftware.com/
下载到这个就可以直接使用了操作数据库跟其它数据库是一样的很方便啊
今天我操作数据库是遇到了第一个问题是,查询显示是连接 字段值的
我第一想到的是用加号,因为用贯了sql server。后来网上查询了一下竟然是用了||这个的,很奇怪啊
还就是时间日期是遇到问题了,查询文档得到使用 date ......